IdentityServer3将Logout重定向到自定义URL

时间:2017-03-08 11:48:54

标签: c# .net url-redirection logout identityserver3

我在google和Stack Overflow中搜索过没有合适的答案。

我在客户端应用程序中使用ReactJs + Redux,.Net WebAPI用于联系数据库和其他逻辑实现,最后我使用IdentityServer3来验证用户。

点击退出后,我会触发以下网址:https://localhost:123/core/connect/endsession

new Client
{
    Enabled = true,
    ClientName = "Super Star Application",
    ClientId = "SS",
    Flow = Flows.Implicit,
    RequireConsent = false,
    RequireSignOutPrompt =false,
    RedirectUris = new List<string>
    {
        "http://localhost:111/callback"
    },
    PostLogoutRedirectUris = new List<string> {"https://www.google.com/"},
    AllowedCorsOrigins = new List<string>
    {
        "http://localhost:111/"
    },
    AllowAccessToAllScopes=true
}

在Startup.cs中我有以下代码

app.Map("/core", core =>
{
    var idSvrFactory = Factory.Configure();
    idSvrFactory.ConfigureUserService("AspId");

    var options = new IdentityServerOptions
    {
        SiteName = "Super Star",
        SigningCertificate = Certificate.Get(),
        Factory = idSvrFactory,
        ProtocolLogoutUrls = new System.Collections.Generic.List<string>()
        {
            "https://www.google.co.in"
        },
        AuthenticationOptions = new AuthenticationOptions
        {
            EnablePostSignOutAutoRedirect=true,
            EnableSignOutPrompt = false,
            PostSignOutAutoRedirectDelay = 1,
            EnableLoginHint = true,
            RememberLastUsername = true,
            EnableAutoCallbackForFederatedSignout = true,
            RequireSignOutPrompt = false
        }
    };

    core.UseIdentityServer(options);
});

我不知道如何重定向到http://www.google.com而不是以下屏幕

enter image description here

请帮助我...

1 个答案:

答案 0 :(得分:1)

您需要调用endsession端点,传递id令牌并将logout重定向url作为参数发布。

/connect/endsession?id_token_hint={id token}&post_logout_redirect_uri=http://www.google.com

其中{id token}是在调用/ connect / authorize端点时从身份服务器返回的id令牌。

请参阅此处的文档https://identityserver.github.io/Documentation/docsv2/endpoints/endSession.html

请注意,您必须返回一个id令牌才能使重定向工作,否则endsession请求的验证将失败,并且不会发生重定向。