Identity Server 4 / OpenID Connect 默认重定向 URL

Identity Server 4 / OpenID Connect default redirect URL

我开始使用 Identity Server 4(在 ASP.NET 核心下)使用隐式流来保护 Angular 2 前端(到 Web API 服务)。

使用 oidc-client JS library,我可以成功地从示例的默认页面重定向到我的登录页面,让用户进行身份验证,然后(通过 /connect/authorize)重定向回 Angular站点的回调。

如果用户直接浏览到我的身份验证登录页面(而不是Angular主页),我可以进行身份​​验证,但无处重定向。如果我手动重定向到身份验证服务器的 /connect/authorize 页面,OIDC 客户端报告 "No matching state found in storage"。 (据推测,OIDC 客户端正在本地持久化某些内容以验证对原始请求的响应?)。

一个明显的解决方案是 Auth 服务器将任何没有指定重定向的请求重定向到 Angular 客户端,然后客户端可以正常重定向回 Auth 服务器。不过,这感觉就像很多往返。

是的 - 因为这不是它的工作原理。身份验证流程从客户端应用程序开始 - 而不是身份提供者。

OpenID Connect 提供商通常有不止一个客户端 - 因此它需要上下文信息(也就是有效的 OIDC 授权请求)。

如果您希望旅程从提供者开始,您需要像您提议的那样做一些事情 - 但是一旦您有了第二个客户,您就需要对此更加聪明(例如选择屏幕等)。