我有一些使用 openid 连接授权代码流程的网络应用程序客户端,每个应用程序都有不同的客户端密钥和密钥。我想与我的所有 Web 应用程序共享 ID 令牌,换句话说,创建一个会话,以便使用浏览器的用户可以使用任何 Web 应用程序,而无需再次进行身份验证。
我计划将构成会话一部分的所有 Web 应用程序的客户端 ID 添加到 aud(观众)中。
这有什么问题吗?
每个 Web 应用程序都可以使用 id 令牌请求访问令牌吗?
这就是拥有 OIDC 提供商的 SSO 位的全部意义。如果您已经通过一个客户端的 idsrv 进行身份验证,则当您使用与 ID 提供程序相同的 IdentityServer 导航到另一客户端时,无需重新进行身份验证。
可能还有另一个重定向,但应该直接返回客户端。
鉴于:
您不会在 Web 应用程序之间共享客户端 ID,因此也不会共享 ID 令牌。您不能将多个受众放入 aud 值中。
相反,您每次都会执行完整的身份验证工作流程,但是,正如 John Korsnes 所描述的,如果身份验证表单设置的 cookie 仍然有效,身份验证表单将不会打开,但会立即重定向并提供代码值获取网络应用程序特定的令牌。