Каков правильный способ аутентификации пользователя?

Несколько лет назад я написал небольшой и очень неполный компонент, который аутентифицировал пользователей, выходящих извне Joomla! то есть мобильное приложение.

Есть ли правильный или предпочтительный способ передать это?

7 голосов | спросил Nestor Ledon 25 PMpFri, 25 Apr 2014 22:24:19 +040024Friday 2014, 22:24:19

3 ответа


5

На основе вашего комментария вы ищете установку OAuth. Насколько я знаю, Joomla имеет классы Oauth, встроенные в ядро, но эти классы позволяют Joomla действовать как клиент (ваше мобильное приложение является клиентом в вашем случае). Они не дают вам возможность запускаться как сервер.

Недавно я использовал этот пакет для настройки сервера OAuth2 на платформе Joomla: https://github.com/bshaffer /oauth2-сервера PHP . Он работал очень хорошо. Это займет несколько дней, чтобы настроить и запустить все, но вы можете установить это в Joomla.

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

Поскольку это похоже на то, что вы также управляете мобильным приложением, это не нужно. Вы доверяете клиенту (я надеюсь), поэтому вы можете просто ввести пользователя в приложение.

Затем вы использовали параметр «Владелец ресурса /учетные данные пароля», описанный здесь: http://bshaffer.github.io/oauth2-server-php-docs/overview/grant-types/. Это мобильное приложение просто отправляет пользователь /пароль, введенный на ваш сайт Joomla, а затем сайт Joomla отправляет обратно маркер для проверки. Маркер может быть сохранен и использован в следующий раз вместо повторного входа в систему.

Это дает вам контроль над сайтом Joomla, чтобы аннулировать токены, чтобы заставить мобильных пользователей снова войти в систему.

ответил David Fritsch 26 AMpSat, 26 Apr 2014 01:16:27 +040016Saturday 2014, 01:16:27
4

Вы можете использовать следующий код:

JFactory::getApplication()->login($credentials);

, где:

$credentials = Array('username' => string, 'password' => string);
ответил csbenjamin 25 PMpFri, 25 Apr 2014 22:55:41 +040055Friday 2014, 22:55:41
3

Вы хотите использовать что-то вроде OAuth /OAuth2. Моя идея здесь не верна OAuth, но на основе моих знаний о Joomla проще всего.

Подтвердите пользователя через вызов API компоненту в Joomla, чтобы создать токен, прикрепленный к их IP-адресу, а затем перенаправить их с помощью запроса GET, который проверяет этот токен и создает для них сеанс. Маркер легко защищен, так как он полагается на IP для аутентификации уже прошедшего аутентификацию пользователя, лучший способ - убедиться, что его можно использовать только один раз. Для вызова API для получения наилучших результатов должен быть SSL-запрос POST.

Итак, отправьте запрос POST на ваш компонент, содержащий IP-адрес, имя пользователя и пароль пользователя. Если все это допустимо, вы отправляете обратно токен. Затем вы перенаправляете пользователя на свой компонент, содержащий этот токен, чтобы установить сеанс. Я не знаю, как API Joomla можно использовать для входа в систему, но я уверен, что для этого есть что-то.

Изменить: Кажется, csbenjamin ответ пошел в API для входа в систему.

ответил Jordan Ramstad 25 PMpFri, 25 Apr 2014 22:53:38 +040053Friday 2014, 22:53:38

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132