1

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

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

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

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

4

1 回答 1

0

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

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

于 2015-01-07T16:08:11.057 回答