【问题标题】:Symfony 2 RESTful API OAuth2Symfony 2 RESTful API OAuth2
【发布时间】:2016-09-20 14:01:07
【问题描述】:

我有 2 个应用程序:

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

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

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

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

在第一步中,用户提交登录表单 - 然后我需要以某种方式从用户凭据生成令牌。

我能否安全地生成 oauth2 客户端,其 ID 和密码与用户名/密码相同?

【问题讨论】:

    标签: php symfony oauth-2.0


    【解决方案1】:

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

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

    长话短说,FOSOAuthServerBundle 是一个好的开始,但从长远来看,您需要做很多工作。这里有一些材料可以指导您。

    Auth2 rfc:https://www.rfc-editor.org/rfc/rfc6749

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

    签署 JWT:https://jwt.io

    还要查看 openId、RBAC、ACL。这在某些时候也会派上用场。

    【讨论】:

      猜你喜欢
      • 2015-06-06
      • 2023-02-10
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 2016-04-07
      • 2019-11-13
      相关资源
      最近更新 更多