Identity Server 3具有同一客户端的多个URL

时间:2017-05-03 06:49:54

标签: c# authentication single-sign-on identityserver3

我为单点登录设计了一个Identity Server。我在不同的域中管理我的客户端应用程序。请看看这个客户端

new Client
{
    Enabled = true,
    ClientName = "Super UI",
    ClientId = "Super",
    Flow = Flows.Implicit,
    RequireConsent = false,
    RequireSignOutPrompt =false,
    RedirectUris = new List<string>
    {
        "http://localhost:3001/callback",
        "http://localhost:3002/callback",
        "http://localhost:3003/callback"
    },

    AllowedCorsOrigins = new List<string>
    {
        "http://localhost:3001/",
        "http://localhost:3002/",
        "http://localhost:3003/"
    },
    PostLogoutRedirectUris = new List<string>
    {
        "http://localhost:3001/logout",
        "http://localhost:3002/logout",
        "http://localhost:3003/logout"
    },
    AllowedScopes = new List<string>
    {
        "openid",
        "profile",
        "email",
        "SuperUI"
    }
}

但它失败了,我无法使用此设置登录

如果我使用单个网址,那么其工作

new Client
{
    Enabled = true,
    ClientName = "Super UI",
    ClientId = "Super",
    Flow = Flows.Implicit,
    RequireConsent = false,
    RequireSignOutPrompt =false,
    RedirectUris = new List<string>
    {
        "http://localhost:3001/callback"
    },

    AllowedCorsOrigins = new List<string>
    {
        "http://localhost:3001/"
    },
    PostLogoutRedirectUris = new List<string>
    {
        "http://localhost:3001/logout"
    },
    AllowedScopes = new List<string>
    {
        "openid",
        "profile",
        "email",
        "SuperUI"
    }
}

我搜索了很多博客和搜索引擎,对此没有明确的想法,Github中有一个问题https://github.com/IdentityServer/IdentityServer3/issues/3340

请在这方面帮助我。

1 个答案:

答案 0 :(得分:1)

这应该有用。我已经设置了这样的多个客户端。您是否实施了自己的IRedirectUriValidator?那可能包含一个bug。调试应用程序并查看调试输出总是可以帮助我识别问题(请参阅identityserver logging documentation)。

P.S。不要实现自己的IRedirectUriValidator,因为您的配置应该在没有您自己的实现的情况下工作。