【问题标题】:Multiple Applications SSO oauth2多个应用程序 SSO oauth2
【发布时间】:2020-12-22 17:12:24
【问题描述】:
我试图弄清楚如何在两个不同的应用程序上使用 OAUTH2 执行单点登录。目前根据我的理解,我可以使用身份验证提供程序来验证我的客户。流程如下:
- 客户端被重定向到身份验证提供程序
- 然后客户端登录并有代码
- 客户端向我的应用程序提供代码
- 服务器使用代码来检索访问令牌。
- 使用访问令牌,我的服务器使用远程 API 来检索信息
现在我在不同的后端 (PHP) 中有第二个应用程序,我想通知用户已经通过 OAUTH 登录。我天真的解决方案是将第一个应用程序的访问令牌提供给第二个应用程序以执行身份验证。但是,我知道我不能在应用之间共享访问令牌。
【问题讨论】:
标签:
oauth-2.0
single-sign-on
【解决方案1】:
每个后端服务都应该通过自省来验证访问令牌。唯一的自省保证令牌是有效的,没有过期或被撤销。
因此您必须将访问令牌传递给后端服务。为了确保您可以使用 HTTPS API。
【解决方案2】:
关于不共享访问令牌是正确的。身份验证提供程序还应允许创建 ID 令牌。您将使用身份验证提供程序配置您的第二个应用程序并获取客户端 ID。客户端 ID 和 ID 令牌都需要登录第二个应用程序,这将生成它的访问令牌。
您使用的是什么授权类型?
【解决方案3】:
两个应用都需要重定向用户:
这是标准的 SSO 行为,最好接受。可用性相当不错。除非您有高级要求,否则不建议尝试共享令牌。