OAuth2

Аватар пользователя nobody_21

Недавно начал изучать друпал 7 (с связи с желанием заказчика). Успешно создал небольшой сайтик с несколькими самописными модулями - все хорошо. Но есть сторонний сайт, который может предоставить OAuth доступ к моей учетке и есть желание авторизовываться через них. Технически (со стороны стороннего сайта) это возможно.
Скачал кучу модулей связанных с oauth авторизацией и их зависимости. Почитал о самой авторизации...

Теперь не ясно и непонятно, как данные модули связать со своим сайтом. Как подменить страницу логина drupal? Как подменить алгоритмы авторизации со стандартных, на данный? В документации к модулю OAuth2_client (https://www.drupal.org/project/oauth2_client) данный код:

$client_id = 'some_client_id';
  $oauth2_config = array(
    'token_endpoint' => $server_url . '/oauth2/token',
    'auth_flow' => 'user-password',
    'client_id' => $client_id,
    'client_secret' => '12345',
    'username' => $username,
    'password' => $password,
  );
  try {
    $oauth2_client = new OAuth2\Client($oauth2_config, $client_id);
    $access_token = $oauth2_client->getAccessToken();
  }
  catch (Exception $e) {
    drupal_set_message($e->getMessage(), 'error');
  }

И куда его? И что он даст (получает токен и все? Получается - мне надо большую часть процесса реализовывать самому?)
Не откажусь чего-нибудь почитать на тему авторизации OAuth druapl, если что-то такое есть, хотя с английским туго...
Помогите хоть чем-то )).

Модули и темы:
Тип материала:
Версия Drupal:
0 Спасибо

Лучший ответ

Аватар пользователя nobody_21
nobody_21 4 месяца назад

В общем так. Для работы модуля необходимо:
1. Создать СВОЙ модуль (структуру) в папке sites/all/modules/custom/{module_name_folder}.
2. В файле .module необходимо разместить фнукцию-хук меню, в котором должен быть урл для авторизации для пользователя. Мой выглядит, в итоге, так:

<?php
function auth_menu() {
    
$items = array();

    $items['auth/account'] = array(
        
'title' => 'Account',
        
'description' => '',
        
'page callback' => 'drupal_get_form',
        
'page arguments' => array('auth_account_form'),
        
'type' => MENU_LOCAL_TASK,
        
'weight' => 2,
        
'file' => 'auth.inc',
    );

    return $items;
}
?>

3. Создаем файл из параметра "file" (в моем случае это auth.inc).
4. Внутри файла обязательно должна быть функция из параметра 'page arguments' (в моем случае это auth_account_form). Внутри данного файла необходимо подключить провайдер (использовать тот же oauth2_client). Внутри функции размещаем логику работу с удаленной машиной: проверяем "токен", выводим - либо логин-форму, запрос токенов, авторизация, дальнейшая работа с удаленным сервером и т.д.

П.С. "Программировать" ничего не надо было... Сообщество вопроса не поняло - только язвило. Очень жаль, что сообщество в таком состоянии... Находить темы "без ответа" в гугле для друпала, я смотрю, в норме - открываешь данный сайт с конкретным вопросом, а получаешь отсылку куда-то (обратно в гугл) и так первые 5-10 ссылок в гугле на этом сайте, а вопросам по 5-6 лет. Вы ужасно "работаете" - некоторым лучше вообще молчать, а фразы, типа "я флужу подымаю вашу тему" - только доказывает, что сообщество "не работает" и не может нормально и без нервов обеспечить информацией соискателя, только флуд и остается, а ответ "может быть через недельку кто-то появится" - это показатель(!)...

Всем "спасибо"

0 Спасибо

Комментарии

Аватар пользователя Alamir
Alamir 5 месяцев назад

А что конкретно необходимо после авторизации? Не совсем понимаю задачи.

Вы с помощью логина и пароля получаете токен, и вот уже с помощью этого токена в дальнейшем и работаете со стороннем сервером, например передаете с помощью curl что ли бо. В общем работаете со сторонним апи.

Про модуль не скажу, не пробовал.

0 Спасибо
Аватар пользователя nobody_21
nobody_21 5 месяцев назад

Мне нужно именно авторизоваться... Научиться пользоваться OAuth 2.0 (научиться его прикручивать) в друпале 7. На самом деле для работы с АПИ у меня ВСЕ есть, нет понимания КАК прикрутить саму авторизацию К ДРУПАЛУ... По сути, наверное, как получиться токен.

Как я уже написал, я поставил связку модулей, позволяющих "прикрутить" авторизацию. Модуль я "установил", даже указал урл в настройках, но что-то куда-то добавилось? Как мне теперь куда-то это вывести\увидеть? А может вывелось, но я не понял куда? )))

0 Спасибо
Аватар пользователя Studio VIZA
Studio VIZA 5 месяцев назад
nobody_21 написал:
с связи с желанием заказчика

Скажите заказчику, минимум четыре года изучения Друпала, позволят ему с вашей помощью выйти на захватывающие горизонты захвата мирового бизнеса.

По существу. Техническое задание, должно быть составлено опытным специалистом. У вас кто специалист? Заказчик?

0 Спасибо
Аватар пользователя nobody_21
nobody_21 5 месяцев назад

Честно, спасибо, но о том, что сказать заказчику я подумаю сам.
"Прикрутить авторизацию с помощью OAuth 2.0 через сторонний ресурс к друпал 7" - вот мне все понятно. Но я не на столько крут в друпале. Буду счастлив, если вы мне поможете "по теме" хотя бы ссылками.

0 Спасибо
Аватар пользователя nobody_21
nobody_21 5 месяцев назад

Речь о том, как эти слова встраиваются в друпал. У него свои методы интеграции. У меня есть реализации под современные фреймворки авторизации в соц.сетях. Но как подменить авторизацию в друпале - мне не ясно. Найдете пруф по друпалу - буду рад получить ссылку. Мне самому удалось найти пока лишь вот это: http://www.angarsky.ru/drupal/integraciya-drupal-dropbox-oauth-api.html

0 Спасибо
Аватар пользователя nobody_21
nobody_21 5 месяцев назад

Вы упорно игнорируете мой вопрос, пытаясь рассказать о oauth2. Вопрос не в том, как он работает, а как ПОДКЛЮЧИТЬ в друпал его (в первой строке моего вопроса сказано, что я - НОВИЧЕК В ДРУПАЛЕ. - Понятия не имею как реализована даже стандартная авторизация). В документации к модулям о которых идет речь этот процесс не описан.

"Спрашивал бы и гуглил бы скорее всего хуки бекенда..." - скорее всего это то, что от ВАС требуется в этой ветке. Спасибо. Если у вас есть более развернутый ответ, более точный - я приму в дар и это.

0 Спасибо
Аватар пользователя nobody_21
nobody_21 5 месяцев назад

"Теперь не ясно и непонятно, как данные модули связать со своим сайтом."
"Как подменить страницу логина drupal?"
"Как подменить алгоритмы авторизации со стандартных, на данный?"

Вот это действительно интересно "в деталях".

0 Спасибо
Аватар пользователя nobody_21
nobody_21 5 месяцев назад

Хулиган, Чем вы тут занимаетесь? Это форум "Разработка для Drupal \ Программирование" - по всем вопросам всех, при желании, можно отослать в документацию или в матчасть... Но, так как есть данный раздел и он предназначен для помощи (полагаю, это так) - я сюда пишу. А вы занимаетсь флудом и разводите оффтопик.

П.С. Оставьте ссылку на главную страницу документации здесь: убейте смысл форума, возможность понять и обсудить, и главное - докажите, что сообщество поддержки друпала "на дне" (в лучшем случае - документации), а потом уходите - вы все правильно сделаете.

0 Спасибо
Аватар пользователя Studio VIZA
Studio VIZA 5 месяцев назад
nobody_21 написал:
от ВАС требуется в этой ветке

Требуется вашим заказчиком? У кого требуется?

0 Спасибо
Аватар пользователя nobody_21
nobody_21 5 месяцев назад

В общем, все понятно. Спасибо за помощь, сообщество друпал. Требуется "мне" - что - написано в вопросе. Всего лишь хотелось узнать как прикрутить модуль и увидеть его работу. Мо-ло-дцы!

0 Спасибо
Аватар пользователя nobody_21
nobody_21 5 месяцев назад

У меня, как раз стоит сервер авторизации на другой машине (на ларавеле). Мне надо было, чтобы друпал лез на него и авторизовывался. Все, спасибо. С вами все ясно - вы ОЧЕНЬ помогли.

0 Спасибо
Аватар пользователя nobody_21
nobody_21 4 месяца назад

В общем так. Для работы модуля необходимо:
1. Создать СВОЙ модуль (структуру) в папке sites/all/modules/custom/{module_name_folder}.
2. В файле .module необходимо разместить фнукцию-хук меню, в котором должен быть урл для авторизации для пользователя. Мой выглядит, в итоге, так:

<?php
function auth_menu() {
    
$items = array();

    $items['auth/account'] = array(
        
'title' => 'Account',
        
'description' => '',
        
'page callback' => 'drupal_get_form',
        
'page arguments' => array('auth_account_form'),
        
'type' => MENU_LOCAL_TASK,
        
'weight' => 2,
        
'file' => 'auth.inc',
    );

    return $items;
}
?>

3. Создаем файл из параметра "file" (в моем случае это auth.inc).
4. Внутри файла обязательно должна быть функция из параметра 'page arguments' (в моем случае это auth_account_form). Внутри данного файла необходимо подключить провайдер (использовать тот же oauth2_client). Внутри функции размещаем логику работу с удаленной машиной: проверяем "токен", выводим - либо логин-форму, запрос токенов, авторизация, дальнейшая работа с удаленным сервером и т.д.

П.С. "Программировать" ничего не надо было... Сообщество вопроса не поняло - только язвило. Очень жаль, что сообщество в таком состоянии... Находить темы "без ответа" в гугле для друпала, я смотрю, в норме - открываешь данный сайт с конкретным вопросом, а получаешь отсылку куда-то (обратно в гугл) и так первые 5-10 ссылок в гугле на этом сайте, а вопросам по 5-6 лет. Вы ужасно "работаете" - некоторым лучше вообще молчать, а фразы, типа "я флужу подымаю вашу тему" - только доказывает, что сообщество "не работает" и не может нормально и без нервов обеспечить информацией соискателя, только флуд и остается, а ответ "может быть через недельку кто-то появится" - это показатель(!)...

Всем "спасибо"

0 Спасибо
Аватар пользователя Andruxa
Andruxa 4 месяца назад

Да неужели?
То есть - если в вопросе разобраться, то он решаем? Кто бы мог подумать.

nobody_21 написал:
Сообщество вопроса не поняло - только язвило.

Видимо - вопрос был так сформулирован.

nobody_21 написал:
Очень жаль, что сообщество в таком состоянии... Находить темы "без ответа" в гугле для друпала, я смотрю, в норме - открываешь данный сайт с конкретным вопросом, а получаешь отсылку куда-то (обратно в гугл) и так первые 5-10 ссылок в гугле на этом сайте, а вопросам по 5-6 лет. Вы ужасно "работаете" - некоторым лучше вообще молчать, а фразы, типа "я флужу подымаю вашу тему" - только доказывает, что сообщество "не работает" и не может нормально и без нервов обеспечить информацией соискателя, только флуд и остается, а ответ "может быть через недельку кто-то появится" - это показатель(!)...

0 Спасибо
Аватар пользователя nobody_21
nobody_21 4 месяца назад

То есть, вы действительно допускаете, что есть вопросы, которые НЕ РЕШАЕМЫ? Я ничего не говорил об этом. Всего лишь сообщил, что не знаю, как это реализовывается в друпал.

"Вопрос решаем - решайте!" - смешная помощь. К сведению, я это итак знал, поэтому, чтобы не изобретать велосипед обратился сюда... Не уверен, что вопрос решил правильно, поэтому описал свой велосипед (мб, не верно что-то?).

Вопрос не верно сформулирован? А пишут так, буд-то поняли, посчитали "легкой" (или о том, что надо почитать об протоколах), обосрали и ушли...

П.С. Разобраться удалось путем скачивания подобных модулей и разбора их структуры. Мануалы и документация по данным вопросам оказались бесполезны или не найдены (в основном, как раз, темы на форумах - без ответа). А вопрос действительно "банальный", а в сообществе нет ни рабочего модуля до сих пор, ни документации, ни каких-либо мануалов - вы ЭТО называете "решаем"? Я останусь при своем мнении о сообществе друпал просто...

0 Спасибо
Аватар пользователя fairrandir
fairrandir 4 месяца назад

Не знаю как кто, а я так и не понял, ни вашего вопроса, ни вашего решения, ни взаимосвязи между ними. Но вообще, очень похоже, что вам ответили в первом же комментарии.

0 Спасибо
Аватар пользователя nobody_21
nobody_21 4 месяца назад

Миллиард раз написал, и некоторым людям конкретно, что необходимо установить модуль в ДРУПАЛ. Почему мне пишут об OAuth я тоже не понял и не спрашивал об этом. В любом случае, некоторые вопросы внутри сообщество не ясно как формулировать, не являясь частым гостем... Для этого и существуют данные разделы, а не документация, в которой очень все "сухо" и "конкретно". А-то вас послушать, то помощью нужно пользоваться только после "4х лет обучения друпал" - это ппц совет, с тем же успехом можно посылать учить ПХП (если бы это был раздел "программирование на пхп", да?).

Если вопрос не ясен - то это тоже не повод посылать читать что-либо. Помощи я тут прошу у людей. Не можешь \ не понял - ну так спроси или молча иди в лес. У меня после дискуссии сложилось впечатление, что меня поняли, но ответить "не захотели".

0 Спасибо
Аватар пользователя fairrandir
fairrandir 4 месяца назад

Смотрите, ваш вопрос "как сделать OAuth". В дискуссии он изменился на "как изменить механизм авторизации в Друпале". Ваш "ответ" - как добавить свой путь в роутинг. Я лично до сих пор не знаю, чего вы хотели и что в итоге получили.

> Если вопрос не ясен - то это тоже не повод посылать читать что-либо
Вполне себе повод. Правильно сформулированный вопрос - залог правильного ответа. Неправильный вопрос - отправка уточнять формулировки.

0 Спасибо
Аватар пользователя nobody_21
nobody_21 4 месяца назад

Мне пришлось, в итоге, написать СВОЙ модуль, который универсально работает с любой АПИ, для этого достаточно его установить и настроить урлы в админке. В чем проблема у сообщества Друпал? Та "фигня" недописанная умеющая посылать курл-запросы является библиотекой СПОСОБНОЙ реализовать протокол... Решение - писать своё? Вы считаете, что это "решаемо"? Я нет... Хоть бы дописали модуль или документацию к нему.

Правильным ответом было бы "нет, друпал и данный модуль (в частности) не очень хорошо с этим работает, он всего этого не умеет - надо писать своё" (один человек написал, что НАВЕРНОЕ придется писать СВОЙ - то есть, НЕ ЗНАЕТ точно). Потому что так это и есть... А все "посылы" в документацию... - там этого ТОЖЕ нет... В гугл посылать? Ну так "друпал не имеет поддержки такого протокола" - и не надо после этих слов на меня обижаться, если так оно и есть - никто в этой теме меня не переубедил и чего вы все "радуетесь" отсталости данной ЦМС - я хз.

Где фраза "как сделать OAUTH?".
«Теперь не ясно и непонятно, как данные модули связать со своим сайтом. Как подменить страницу логина drupal? Как подменить алгоритмы авторизации со стандартных, на данный? В документации к модулю OAuth2_client (https://www.drupal.org/project/oauth2_client) данный код:

$client_id = 'some_client_id';
$oauth2_config = array(
'token_endpoint' => $server_url . '/oauth2/token',
'auth_flow' => 'user-password',
'client_id' => $client_id,
'client_secret' => '12345',
'username' => $username,
'password' => $password,
);
try {
$oauth2_client = new OAuth2\Client($oauth2_config, $client_id);
$access_token = $oauth2_client->getAccessToken();
}
catch (Exception $e) {
drupal_set_message($e->getMessage(), 'error');
}
И куда его?»

Он не менялся, все эти вопросы присутствуют именно в треде. И все это - часть работы с 1 модулем (потому что всего этого в нем НЕТ, а для работы это НЕОБХОДИМО именно по описанию протокола). Вы-то понимаете о чем речь? Все эти вопросы были заданы, потому что они требуют подключения модуля к друпалу и у меня этих знаний НЕТ. Я написал свой ответ с учетом ВСЕХ вопросов (своих, между прочим) - неужели это так сложно выглядит?

Простите, если что не так сказал, где-то неаккуратно выразился. Поверьте не хотел. Считаю диалог оконченным. Результат достигнут, "выводы" сделаны.

0 Спасибо
Аватар пользователя bumble
bumble 4 месяца назад 1
nobody_21 написал:
Вы ужасно "работаете"

Не "Вы", а МЫ!

nobody_21 написал:
а в сообществе нет ни рабочего модуля до сих пор, ни документации, ни каких-либо мануалов

Все что сообществу нужно - есть.

То чего нет - сообщество делает.

Считаете что чего-то сообществу не хватает - сделайте, напишите модули, документацию и мануалы.

nobody_21 написал:
можно посылать учить ПХП (если бы это был раздел "программирование на пхп", да?)

Да.

nobody_21 написал:
Не можешь \ не понял - ну так спроси или молча иди в лес.

Грубо...
Это форум, не вопросо-ответ, не мануало-сборка, и тем более не тех. поддержка в которой создают иллюзию пляски под дудку клиента.

Как бы кому не хотелось все это видеть - это так.

Аватар пользователя Studio VIZA
Studio VIZA 4 месяца назад
nobody_21 написал:
У меня после дискуссии сложилось впечатление, что меня поняли, но ответить "не захотели".

Это наше право.

0 Спасибо
Аватар пользователя nobody_21
nobody_21 4 месяца назад

Ахахаха, серьезно? Это откуда такое право? Еще раз спросить: вы ЗАЧЕМ мне это пишите все? Какой смысл в ваших словах? Чем кому вы помогли здесь? Почему вы оправдываетесь передо мной? Мне плевать какие у вас права - я задал вопрос, которого вы не поняли \ не захотели помочь, срать на меня сверху это вам права не давало... До свидания.

0 Спасибо
Аватар пользователя nobody_21
nobody_21 4 месяца назад

>Грубо...
>Это форум, не вопросо-ответ, не мануало-сборка, и тем более не тех. поддержка в которой создают иллюзию пляски под дудку клиента.
>Как бы кому не хотелось все это видеть - это так.

Ахахаха... И где мануало-сборка? Заметил полное отсутствие оного, где-либо )))
Клиент? Слово клиент тут относится лишь к друпалу. Вы не относитель к друпалу? Ахахаха... Под какую дудку вы плясали тут?
Цирк. И я об этом как раз )).

Дадада... Новичку на форуме предлагают сделать модуль в такой форме. Ахахаха.... Я-то сделал, но теперь никому не дам.

> То чего нет - сообщество делает.
Уже поменялось на столько много, что даже смешно это слышать. Некоторые модули скоро в школу пойдут будучи не доделанными с 2011-2012... "Технологии впереди" - не, не слышал. Ахахаха...

Да, удачи, воспади. Чо обижаться, если у ВАС (не у меня) все стоит на том же уровне, что и в 2012 году? Мне все равно, не надо оправдывать, ага?

0 Спасибо
Это сообщение находится в тёмной материи. Вы можете изменить настройки просмотра тёмной материи в личном кабинете.
0 Спасибо
Это сообщение находится в тёмной материи. Вы можете изменить настройки просмотра тёмной материи в личном кабинете.
0 Спасибо
Аватар пользователя fairrandir
fairrandir 4 месяца назад
nobody_21 написал:
Клиент? Слово клиент тут относится лишь к друпалу. Вы не относитель к друпалу? Ахахаха... Под какую дудку вы плясали тут?

Опять же, поработайте пожалуйста над формулировками. Ваш стиль изложения сложнопонятен.

0 Спасибо
Аватар пользователя nobody_21
nobody_21 4 месяца назад

Спасибо, видать это факт. Приму к сведению.

0 Спасибо
Это сообщение находится в тёмной материи. Вы можете изменить настройки просмотра тёмной материи в личном кабинете.
Это сообщение находится в тёмной материи. Вы можете изменить настройки просмотра тёмной материи в личном кабинете.
0 Спасибо
Это сообщение находится в тёмной материи. Вы можете изменить настройки просмотра тёмной материи в личном кабинете.
0 Спасибо
Это сообщение находится в тёмной материи. Вы можете изменить настройки просмотра тёмной материи в личном кабинете.
0 Спасибо