使用 OAuth 2.0 进行单点登录


Single Sign On using OAuth 2.0

我正在开发一个使用oauth2对用户进行身份验证的API。要求是为 3 个不同的 Web 应用程序开发单点登录系统。让我们以这个场景为例:

  • 用户登录到其中一个应用程序(假设应用程序 1)。
  • 应用程序 1 接收令牌和刷新令牌。刷新令牌保存在安全会话中。
  • 用户转到第二个应用程序说应用程序2。但是刷新令牌不能用于应用程序 2,因为它是为应用程序 1 创建的。

无需用户登录即可为第二个应用程序生成令牌的最佳方法是什么?

任何建议都会很棒。我采取了正确的方法吗?我使用 symfony2 (FriendsOfSymfony/FOSOAuthServerBundle)

如果您的授权服务器保留 SSO 会话,则在颁发应用程序 2 的令牌时,您的用户将不必再次登录。当然,用户需要同意 application2 请求的范围,因为它是与应用程序 1 无关的不同应用程序(或 OAuth 2.0 术语中的"客户端"),需要自己的令牌和权限。

如果要将两个应用程序视为单个实体,因为它们由同一实体控制和/或对您来说都相同,则可以让它们使用相同的client_id,并client_secret并为此(单个)客户端注册 2 个redirect_uri