I have 2 app:
1 APP - main app (CMR) 2 APP - website
The main aim is connect to 2 APP from 1 APP using OAuth2;
1 APP is implemented FOSOAuthServerBundle, but not exist no one oauth2 clients.
The problem is that I can't generate oauth2 clients, because users know only username/password credentials.
In first step users submit login forms - then in some way I need from user credentials generate tokens.
Could I securely generate oauth2 clients with same id & secret as user username/password ?
1条答案
按热度按时间mzmfm0qo1#
用户不需要知道client_id和client_secret。实际上,除了APP之外,其他任何人都知道它们是不安全的。2.客户端凭据(client_id,client_secret)在认证服务器中生成。然后,APP2开发者获得该客户端凭证,并将它们存储在只有APP2可以访问它们的地方(如app 2配置文件,或app 2数据库)完成后,当用户想登录时,他只需要提供用户名和密码,app 2将它们 Package 在对auth服务器的token API的API调用中,授权类型为'password'和所需的作用域。
但这只是auth2的皮毛。如果您向网络中添加第三个应用程序,并且希望A2和A3使用A1生成的令牌进行安全通信,那么您将需要在A1中使用内省API,甚至需要使用签名的JWT openId。
长话短说,FOSOAuthServerBundle是一个很好的开始,但从长远来看,您将需要投入大量的工作。
验证2 RFC:https://www.rfc-editor.org/rfc/rfc6749
令牌自检RFC:https://www.rfc-editor.org/rfc/rfc7662
签名JWT:https://jwt.io
还可以研究openId、RBAC、ACL。这在某些时候也会派上用场。