0

我想将我的 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 检查?

4

2 回答 2

1

你是对的client_secret。更广泛地发布密钥不是有效的做法。

不幸的是,此时 FOSOAuthBundle 不适合您的需求。此捆绑包仅关注后端 OAuth 客户端。他们在 github 上有未解决的问题以添加对公共客户端的支持:https ://github.com/FriendsOfSymfony/FOSOAuthServerBundle/issues/266

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

于 2017-03-20T08:10:10.117 回答
0

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

public function checkSecret($secret)
    {
        if (in_array("authorization_code", $this->getAllowedGrantTypes())) {
            return true;
        }
        return parent::checkSecret($secret);
    }
于 2019-06-06T13:46:05.910 回答