SSOCircle продолжает перенаправлять на страницу согласия SAML2.0
Я использую SSOCircle для тестирования своей реализации SAML с помощью Codeigniter. Текущие шаги таковы:
- Доступ website.com
- Перенаправлено на Страницу согласия SSOCircle
- Проверка личности
- Передавать пользовательские данные обратно в website.com
Однако после шага 3 он переходит к шагу 4 и немедленно возвращается к шагу 3.
Это мой код:
public function index()
{
$data['languages']= get_all_languages();
$sp_auth = 'default-sp';
try {
$auth = new SimpleSAML_Auth_Simple($sp_auth);
$auth->requireAuth(array(
'ReturnTo' => $this->data['controller'],
'KeepPost' => FALSE,
));
$attributes = $auth->getAttributes();
var_dump($attributes);
} catch (Error $e) {
print_r($e);
}
}
Я подумал, что мой редирект может быть причиной того, что он продолжает вызывать страницу согласия. Однако при добавлении другого URL-адреса для доступа к нему с помощью этой функции
public function auth(){
$attributes = $auth->getAttributes();
var_dump($attributes);
}
Я получаю эту ошибку:
SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Backtrace:
1 www/_include.php:45 (SimpleSAML_exception_handler)
0 [builtin] (N/A)
Caused by: SimpleSAML_Error_Exception: No authentication source with id 'Login/Auth' found.
Backtrace:
2 lib/SimpleSAML/Auth/Source.php:335 (SimpleSAML_Auth_Source::getById)
1 modules/saml/www/sp/saml2-acs.php:12 (require)
0 www/module.php:135 (N/A)
Я надеюсь, что кто-нибудь сможет взглянуть на это и помочь мне с этим. Спасибо.
ОБНОВЛЕНИЕ:
Недавно я заметил, что SSOCircle фактически возвращается на мою страницу входа. Однако он немедленно перенаправляет его обратно на страницу SSOCircle. Не уверен, поможет ли это
НОЛЬ Перенаправлять Вы были перенаправлены на: : Я только что проверил журналы и получил это предупреждение
Mar 12 23:26:26 simplesamlphp WARNING [da20d4a7a3] Could not load state specified by InResponseTo: NOSTATE Processing response as unsolicited.
Мне сказали, что это из-за утерянной информации о состоянии. Однако я проверил свои имена файлов cookie, и они совпадают. Что еще я пропустил?
Https://github.com/simplesamlphp/simplesamlphp/wiki/State-Information-Lost
1 answers
Обновление: В следующем абзаце предполагается, что при изменении кода, чтобы избежать циклического перенаправления, вы обязательно:
Настройка модуля аутентификации :**
В unix это можно сделать, выполнив (из каталога установки SimpleSAMLphp):
touch modules/exampleauth/enable
Следующим шагом является создание источника аутентификации с помощью этого модуля. Источник аутентификации - это модуль аутентификации с определенным конфигурация. У каждого источника аутентификации есть имя, которое используется для ссылки на эту конкретную конфигурацию в конфигурации IdP. Конфигурацию источников аутентификации можно найти в config/authsources.php .
В этой настройке этот файл должен содержать одну запись:
<?php $config = array( 'example-userpass' => array( 'exampleauth:UserPass', 'student:studentpass' => array( 'uid' => array('student'), 'eduPersonAffiliation' => array('member', 'student'), ), 'employee:employeepass' => array( 'uid' => array('employee'), 'eduPersonAffiliation' => array('member', 'employee'), ), ), );
Эта конфигурация создает двух пользователей - студента и сотрудника, с паролями studentpass и employeepass. Имя пользователя и пароль хранятся в индексе массива (студент: студенческий билет для студента-пользователя. Атрибуты для каждого пользователя настраиваются в массиве, на который ссылается индекс. Для пользователя-студента это:
array( 'uid' => array('student'), 'eduPersonAffiliation' => array('member', 'student'), ),
Атрибуты будут возвращены IdP при входе пользователя в систему.
Несоответствие между настройками сеанса PHP для приложения и SimpleSAMLphp
Если и приложение, в которое вы пытаетесь добавить поддержку SAML 2.0, и SimpleSAMLphp используют сеанс PHP для хранения сеансов, и они не согласны со всеми параметрами, вы можете столкнуться с этой ошибкой. По умолчанию SimpleSAMLphp использует настройки из php.ini, но их можно переопределить в config/config.php .
Если это является причиной вашей ошибки, у вас есть два варианта:
Затем No authentication source with id
произошла ошибка из-за конфликта при обработке сеанса между SimpleSAMLphp и CodeIgniter.
Решение 1. измените SimpleSAMLphp, чтобы использовать другой метод хранения сеансов
В решение состоит в том, чтобы настроить SimpleSAMLphp на использование чего-то другого, кроме phpsession, так как существует проблема с Memcached. лучший способ - установить для него значение "sql". Вы делаете это в simplesamlphp/config/config.php :
/*
* Configure the datastore for simpleSAMLphp.
*
* - 'phpsession': Limited datastore, which uses the PHP session.
* - 'memcache': Key-value datastore, based on memcache.
* - 'sql': SQL datastore, using PDO.
*
* The default datastore is 'phpsession'.
*
* (This option replaces the old 'session.handler'-option.)
*/
'store.type' => 'sql',
Решение 2. Измените настройки сеанса, чтобы они соответствовали приложению и SimpleSAMLphp:
Если вы решите привести настройки сеанса в соответствие, вам следует изменить настройки в php.ini. Это делается для того, чтобы убедиться, что настройки применяются ко всему, что использует настройки по умолчанию. Следующие параметры в php.ini должны соответствовать настройкам, используемым приложением:
- session.save_handler: Это метод, который используется для хранения сеанса. Значение по умолчанию - "файлы".
- session.save_path: Это расположение, в котором сохраняются файлы сеанса. Значение по умолчанию зависит от вашей установки PHP.
- session.name : Это имя файла cookie сеанса. Значение по умолчанию - "PHPSESSID".
- session.cookie_path: путь, которым ограничен файл cookie сеанса. По умолчанию используется "/", что означает, что он доступен для всех страниц вашего домена.
- session.cookie_domain: Это домен, в котором ограничен файл cookie сеанса. Значение по умолчанию не установлено, что делает файл cookie доступным
только для текущего домена.
Пожалуйста, ознакомьтесь с документами для получения дополнительной информации
Если это все еще не сработало, в качестве последнего средства : попробуйте отключить кэширование лаком
Источники:
https://github.com/zl4bv/CakePHP-simpleSAMLphp-Plugin/issues/7
https://www.drupal.org/project/simplesamlphp_auth