Symfony 2 RESTful API OAuth2

时间:2016-09-19 18:55:27

标签: php symfony oauth-2.0

我有2个app:

1 APP - 主应用程序(CMR) 2 APP - 网站

主要目的是使用OAuth2从1个APP连接到2个APP;

1个APP实现了FOSOAuthServerBundle,但不存在任何一个oauth2客户端。

问题是我无法生成oauth2客户端,因为用户只知道用户名/密码凭据。

用户首先提交登录表单 - 然后以某种方式我需要从用户凭据生成令牌。

我可以安全地生成具有相同ID和&的oauth2客户端吗?秘密作为用户名/密码?

1 个答案:

答案 0 :(得分:1)

用户不需要知道client_id和client_secret。实际上除了APP 2之外,其他任何人都不知道它们是否安全。客户端凭证(client_id,client_secret)是在auth服务器中生成的。然后APP 2开发人员获取此客户端凭据并将其存储在只有APP 2可以访问它们的地方(例如app 2配置文件或app 2 db)。完成此操作后,当用户想要登录时,他只提供用户名和密码,app 2将它们包含在对auth服务器的令牌API的API调用中,并使用授权类型'密码'和想要的范围。

但这只是划伤了auth2的表面。如果您向网络添加第三个应用程序,并且希望A2和A3使用A1生成的令牌安全地进行通信,那么您将需要A1中的内省API,甚至使用签名的JWT openId。

长话短说,FOSOAuthServerBundle是一个良好的开端,但从长远来看,你需要付出很多努力。以下是一些指导您的材料。

Auth2 rfc:https://tools.ietf.org/html/rfc6749

令牌内省rfc:https://tools.ietf.org/search/rfc7662

签署JWT:https://jwt.io

另请参阅openId,RBAC,ACL。这在某些方面也会派上用场。