проверить, если пользователь вошел в систему без перенаправления, с протоколом SAML? - PullRequest
2 голосов
/ 25 января 2012

Я только начал разработку с simplesamlPHP , который использует протокол SAML. Я хочу, чтобы пользователи могли видеть веб-приложение без входа в систему (как анонимный пользователь. Когда пользователь вошел в систему, он может видеть некоторые скрытые элементы.

Мне нужно проверить, не вошел ли пользователь в другие сервисы (или мне нужно проверить это у поставщика услуг?), Не перенаправляя пользователя, потому что, если он перенаправляет, пользователь получит форму входа.

1 Ответ

1 голос
/ 27 января 2012

Ваше приложение должно быть защищено с помощью SimpleSAMLphp SP.

Чтобы проверить, зарегистрирован ли пользователь или нет, следует загрузить библиотеку simpleSAMLphp, а затем использовать функцию isAuthenticated ().

Это первое, что вы должны проверить при загрузке функции login.php вашего приложения. Если isAuthenticated () возвращает false, тогда вы перенаправляете на SP, если isAuthenticated () возвращает true, тогда вы можете проверить, имел ли пользователь активный сеанс в конечном приложении, и обновить его (если существует) или создать новый.

simpleSAMLphp хорошо задокументировано. Проверьте документацию по API здесь [1]

[1] http://simplesamlphp.org/docs/trunk/simplesamlphp-sp-api

Пример кодирования:

require_once('/var/lib/usr/simplesamlphp/lib/_autoload.php');

$saml_auth = new SimpleSAML_Auth_Simple('saml');

if ($saml_auth->isAuthenticated()) {
  $attributes = $saml_auth->getAttributes();
  if (is_user_loggedin_local_app()) {
    update_session_local_app($attributes);
  }
  {
    create_session_local_app($attributes);
  }
}
else {
  $saml_auth->requireAuth();
}

Как вы видите, ваша локальная форма входа исчезает. Если вы хотите включить 2 способа аутентификации (saml и локальный), вам нужно создать новое представление в локальном приложении с этой логикой и добавить ссылку на это представление в форме локального входа.

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