【问题标题】:Angular2 and symfony3 FOSOAuthServerBundle authorisationAngular2 和 symfony3 FOSOAuthServerBundle 授权
【发布时间】:2019-06-06 21:46:05
【问题描述】:

我想将我的 angular2 前端应用程序与 symfony 后端连​​接起来。所以我使用 FOSOAuthServerBundle (https://github.com/FriendsOfSymfony/FOSOAuthServerBundle) 来授权我的前端应用程序,但我不清楚如何实现这一点。

  1. 我尝试了“令牌”端点方法,但我必须从我的 angular2 应用程序发送 client_id 和 client_secret。而且我认为将 client_secret 公开存储是不好的。

  2. “授权”端点不使用 client_secret,但要求登录表单,这对我的情况不利。

  3. 我尝试了自定义授权扩展,但 FOSOAuthServerBundle 还需要使用 client_secret 验证客户端。

使用 symfony 授权 angular2 的最佳做法是什么?可以在前端存储client_secret吗?或者我应该扩展 FOSOAuthServerBundle 并删除 client_secret 检查?

【问题讨论】:

  • 需要更多信息。如果可能的话,代码片段。
  • 如果 FOSOAuthServeBundle 不符合 SPA 要求,我决定搜索另一个捆绑包,并找到了很好的 Symfony SPA 身份验证解决方案:github.com/lexik/LexikJWTAuthenticationBundle

标签: symfony angular oauth-2.0 fosoauthserverbundle


【解决方案1】:

您对client_secret 的看法是正确的。更广泛地发布密钥不是有效的做法。

很遗憾,此时 FOSOAuthBundle 不适合您的需求。此捆绑包仅关注后端 OAuth 客户端。他们在 github 上有 open issue 以增加对公共客户端的支持:https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/issues/266

关于令牌和授权端点需要澄清的一件事——令牌和授权端点必须在访问您的资源的过程中混合使用。我建议您阅读整个 RFC 以了解 OAuth 的授权过程:https://www.rfc-editor.org/rfc/rfc6749

【讨论】:

  • 感谢您的回答!您能否建议我应该使用什么 symfony 包来进行案例身份验证(公共客户端/javascript)?
  • 不幸的是,提供 OAuth 服务器的捆绑包并不多。根据我的经验,没有任何专用于 Symfony 的捆绑包允许使用公共客户端。我将这个捆绑包用于我的应用程序packagist.org/packages/bshaffer/oauth2-server-php,几乎没有调整。
  • 如果我扩展 FOSOAuthServerBundle 并跳过 client_secret 验证,解决方案会怎样?会不会错? :)
  • 如果你以正确的方式(fork、change、public changes as packagist),它可以成为你的解决方案。
  • @michail_w 是对的:目前 FOS 捆绑包不适合公共客户端。一个新的包正在开发中,应该可以解决这个问题:github.com/OAuth2-Framework/server-bundle
【解决方案2】:

Hacky 解决方案:在 src/Entity/OAuth2/Client.php 中,您可以像这样覆盖 checkSecret 方法:

public function checkSecret($secret)
    {
        if (in_array("authorization_code", $this->getAllowedGrantTypes())) {
            return true;
        }
        return parent::checkSecret($secret);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    相关资源
    最近更新 更多