Php 使用OAuth 2.0进行单点登录

Php 使用OAuth 2.0进行单点登录,php,symfony,oauth-2.0,fosoauthserverbundle,Php,Symfony,Oauth 2.0,Fosoauthserverbundle,我正在开发一个API,它使用oauth2对用户进行身份验证。需求是为3种不同的web应用程序开发单一登录系统。 让我们以这个场景为例: 用户登录到其中一个应用程序,比如application1。 application1接收令牌和刷新令牌。刷新令牌保存在安全会话中。 用户转到第二个应用程序,如application2。但是刷新令牌不能用于application2,因为它是为application1创建的。 为第二个应用程序生成令牌而无需用户登录的最佳方法是什么 任何建议都很好。我是否采取了正确的

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

用户登录到其中一个应用程序,比如application1。 application1接收令牌和刷新令牌。刷新令牌保存在安全会话中。 用户转到第二个应用程序,如application2。但是刷新令牌不能用于application2,因为它是为application1创建的。 为第二个应用程序生成令牌而无需用户登录的最佳方法是什么

任何建议都很好。我是否采取了正确的方法?
我使用symfony2 FriendsOfSymfony/FOSOAuthServerBundle

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


如果您希望将两个应用程序视为一个实体,因为它们由同一实体控制和/或对您来说都是一样的,您可以让他们使用相同的客户端id和客户端密码,并为此单个客户端注册2个重定向uri。

感谢Hans Z的回答。您如何同意应用程序2请求的作用域并为其提供新令牌?同样的客户id很有趣。OAuth2是为授权而设计的,但不是身份验证。对于后者,有OpenId Connect作为OAuth2的扩展,我想这更符合您的需要。看见