我有两个app:
1个应用程序-主应用程序(CMR) 2个应用程序-网站
主要目标是使用OAuth2从1个应用连接到2个应用;
1个应用程序实现了FOSOAuthServerBundle,但不存在一个oauth2客户端。
问题是我不能生成oauth2客户端,因为用户只知道用户名/密码凭证。
在第一步,用户提交登录表单-然后,在某种程度上,我需要从用户凭据生成令牌。
我是否可以使用与用户用户名/密码相同的id和密码安全地生成oauth2客户端?
发布于 2016-09-20 14:01:08
用户不需要知道client_id和client_secret。实际上,除了应用程序2之外,任何人都不知道它们是不安全的。客户端凭据(client_id、client_secret)是在身份验证服务器中生成的。然后,应用程序2开发人员获得此客户端凭据,并将其存储在只有应用程序2才能访问它们的位置(如应用程序2配置文件或应用程序2数据库)。在此之后,当用户想要登录时,他只提供用户名和密码,应用程序2将它们封装在对身份验证服务器的token API的API调用中,并使用授权类型' password‘和想要的作用域。
但这只触及了auth2的皮毛。如果您将第三个应用程序添加到您的网络,并且希望A2和A3使用由A1生成的令牌进行安全通信,那么您将需要A1中的introspect API,甚至需要使用签名的JWT。
长话短说,FOSOAuthServerBundle是一个很好的开始,但从长远来看,你需要投入大量的工作。这里有一些指导你的材料。
Auth2 rfc:https://www.rfc-editor.org/rfc/rfc6749
令牌自省rfc:https://tools.ietf.org/search/rfc7662
签名JWT:https://jwt.io
还可以查看openId、基于角色的访问控制、ACL。这在某种程度上也会派上用场。
https://stackoverflow.com/questions/39580207
复制相似问题