Невозможно получить претензии от ADFS, используя SimpleSaml inLaravel
Итак, у меня есть проект, который взаимодействует с сервером ADFS. Запрос представляется успешным и возвращается на сайт, однако я не могу получить какие-либо возвращенные данные для использования. Это, вероятно, где-то спрятано в рамках, но некоторые указания будут полезны.
Я использую aacotroneo/Laravel-Saml2, который, по моему мнению, настроен правильно.
При вызове / входе в систему страница перенаправляется на сервер ADFS, проверяются учетные данные, а затем перенаправляется обратно на выбранную мной страницу.
Это внутри моего метода переадресации аутентифицированного:
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guest())
{
if ($request->ajax())
{
return response('Unauthorized.', 401);
}
else
{
//die();
//return redirect()->Route('register');
return session("LOGINDATA", Saml2::login());
//return redirect()->guest('auth/login');
}
}
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
Как видите, я попробовал пару вещей.
Я отметил это в конфигурации:
'assertionConsumerService' => array(
// URL Location where the <Response> from the IdP will be returned,
// using HTTP-POST binding.
// Leave blank to use the 'saml_acs' route
'url' => '',
),
Так что я знаю, что использую встроенную функцию ACS из этого плагина laravel, однако я понятия не имею, как получить данные. Вот что с ним происходит: (по умолчанию)
public function login($returnTo = null, $parameters = array(), $forceAuthn = false, $isPassive = false, $stay = false, $setNameIdPolicy = true)
{
assert('is_array($parameters)');
$authnRequest = new OneLogin_Saml2_AuthnRequest($this->_settings, $forceAuthn, $isPassive, $setNameIdPolicy);
$this->_lastRequest = $authnRequest->getXML();
$this->_lastRequestID = $authnRequest->getId();
$samlRequest = $authnRequest->getRequest();
$parameters['SAMLRequest'] = $samlRequest;
if (!empty($returnTo)) {
$parameters['RelayState'] = $returnTo;
} else {
$parameters['RelayState'] = OneLogin_Saml2_Utils::getSelfRoutedURLNoQuery();
}
$security = $this->_settings->getSecurityData();
if (isset($security['authnRequestsSigned']) && $security['authnRequestsSigned']) {
$signature = $this->buildRequestSignature($samlRequest, $parameters['RelayState'], $security['signatureAlgorithm']);
$parameters['SigAlg'] = $security['signatureAlgorithm'];
$parameters['Signature'] = $signature;
}
return $this->redirectTo($this->getSSOurl(), $parameters, $stay);
}
Вне здесь я невежественен. Существует существующая настройка simplesamlphp на другом поддомене с использованием традиционных базовых методов кода, которая работает довольно хорошо, и претензии возвращаются. Я думаю, что это должно быть связано с частью процесса установки моего SP или с данными, которые не передаются.
Вот как выглядит конфигурация SP: (некоторые данные удалены для безопасности)
'sp' => array(
// Specifies constraints on the name identifier to be used to
// represent the requested subject.
// Take a look on lib/Saml2/Constants.php to see the NameIdFormat supported
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
// Usually x509cert and privateKey of the SP are provided by files placed at
// the certs folder. But we can also provide them with the following parameters
'x509cert' => env('SAML2_SP_x509','TRUNCATED'),
'privateKey' => env('SAML2_SP_PRIVATEKEY','TRUNCATED'),
// Identifier (URI) of the SP entity.
// Leave blank to use the 'saml_metadata' route.
'entityId' => env('SAML2_SP_ENTITYID',''),
// Specifies info about where and how the <AuthnResponse> message MUST be
// returned to the requester, in this case our SP.
'assertionConsumerService' => array(
// URL Location where the <Response> from the IdP will be returned,
// using HTTP-POST binding.
// Leave blank to use the 'saml_acs' route
'url' => '',
),
// Specifies info about where and how the <Logout Response> message MUST be
// returned to the requester, in this case our SP.
// Remove this part to not include any URL Location in the metadata.
'singleLogoutService' => array(
// URL Location where the <Response> from the IdP will be returned,
// using HTTP-Redirect binding.
// Leave blank to use the 'saml_sls' route
'url' => '', //doesn't work on other services at the mo and not setting up for now.
),
),