如何为授权代码流传递acr_values(IdentityServer3 Openid connect)

时间:2019-04-01 07:00:13

标签: c# oauth-2.0 openid-connect identityserver3

如果您使用的是SSO,并且您的帐户已链接到您在Salesforce上使用的同一帐户,则无需显示登录页面。

支持身份服务器将附加的身份验证相关信息传递给用户服务。

acr_values-还有一些具有特殊含义的值:idp:name_of_idp绕过登录/家庭领域屏幕,并将用户直接转发到选定的身份提供者(如果每个客户端配置允许)

因此我们可以设置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");

0 个答案:

没有答案