我为单点登录设计了一个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
请在这方面帮助我。
答案 0 :(得分:1)
这应该有用。我已经设置了这样的多个客户端。您是否实施了自己的IRedirectUriValidator
?那可能包含一个bug。调试应用程序并查看调试输出总是可以帮助我识别问题(请参阅identityserver logging documentation)。
P.S。不要实现自己的IRedirectUriValidator
,因为您的配置应该在没有您自己的实现的情况下工作。