Как пройти Передача acr_values ​​для потока кода авторизации (IdentityServer3 Openid connect) - PullRequest
0 голосов
/ 01 апреля 2019

Если вы используете SSO и ваша учетная запись связана с той же учетной записью, которую вы используете в Salesforce, вам не нужно показывать страницу входа.

Сервер идентификации поддерживается для передачи дополнительной информации, связанной с аутентификацией, впользовательский сервис.

acr_values ​​- есть также значения с особым значением: idp: name_of_idp пропускает экран области входа в систему / home и перенаправляет пользователя непосредственно к выбранному провайдеру идентификации (если это разрешено для конфигурации клиента)

Таким образом, мы можем установить параметры, такие как acrValues: "idp: SalesForce"

Но экран ошибок не перенаправляет на наш URL обратного вызова.

ОШИБКА IdentityServer3.Core.Endpoints.AuthenticationController - запрошен IdP: SalesForce, но служба пользователя произвела вход для IdP: idsrv

Как решить эту проблему?

        var state = Guid.NewGuid().ToString("N");
        var nonce = Guid.NewGuid().ToString("N");
        var tempState = await Request.GetTempValuesAsync();
        SetTempState(tempState["redirectUri"].FirstOrDefault(), state, nonce);
        var authorizeUrl = new AuthorizeRequest(_dicoveryResponse.AuthorizeEndpoint).CreateAuthorizeUrl(
            clientId: _authClientId,
            responseType: "code", 
            scope: "openid api offline_access",
            redirectUri: _appBaseUrl + "/account/callback",
            state: state,
            nonce: nonce,
            acrValues: "idp:SalesForce");
...