ADAL.JS - Поддержка метода POST? Поддержка нормального потока кода аутентификации? - PullRequest
1 голос
/ 06 июня 2019

Мы успешно реализовали аутентификацию через библиотеку ADAL.js. Мы пытаемся использовать его для аутентификации в ADFS. Пока он успешно проходит проверку подлинности, мы не можем запрашивать какие-либо претензии / роли. Мне сказали, что проблема в том, что «ADFS разрешает неявное предоставление, только если repsonse_mode является либо формой, либо фрагментом». Мне интересно, есть ли способ изменить код для поддержки отправки POST в ADFS (вместо GET)? Похоже, что библиотека использует неявный поток - может ли она поддерживать нормальный поток кода аутентификации? Любые другие предложения, чтобы обойти эту проблему?

Мы можем отправить запрос на перенаправление в ADFS, поступив в виде запроса GET. После аутентификации информация о пользователе и токен доступа принимаются через URL-адрес перенаправления. Но, похоже, нет способа предложить ADFS включить роли / утверждения пользователя.

Попытка использования вариантов конфигурации для передачи различных параметров в ADFS, но ни одного из них недостаточно для принудительного включения ролей / утверждений:

private _config = {
    instance: "xxxx", 
    tenant: "xxxx",          
    clientId: "xxxx",       
    redirectUri: "xxxx", 
    postLogoutRedirectUri: "xxxx"
    , extraQueryParameter: "ResourceId=xxxx"
  }

1 Ответ

1 голос
/ 08 июня 2019

Кажется, что есть обходной путь, который позволяет принудительно это сделать:

В adal.js внесите следующие изменения:

/**
     * Initiates the login process by redirecting the user to Azure AD authorization endpoint.
     */
    AuthenticationContext.prototype.login = function (loginStartPage) {
        // Token is not present and user needs to login
        ...

        // var urlNavigate = this._getNavigateUrl('id_token', null) + '&nonce=' + encodeURIComponent(this._idTokenNonce);
        // Force the response as a POST
        var urlNavigate = this._getNavigateUrl('id_token', null) + '&response_mode=form_post&nonce=' + encodeURIComponent(this._idTokenNonce);

См .: https://medium.com/the-new-control-plane/the-mystery-of-the-missing-adfs-jwt-claims-7658d9cdeaac

...