Невозможно получить претензии от 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.
    ),
),

0 ответов

Другие вопросы по тегам