Angular2和symfony3 FOSOAuthServerBundle授权

时间:2017-03-20 07:38:18

标签: symfony angular oauth-2.0 fosoauthserverbundle

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

你对client_secret的看法是正确的。更广泛地发布密钥是不合理的做法。

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

澄清有关令牌和放大器的一件事授权端点 - 必须在访问资源的过程中混合使用令牌和授权端点。我建议您阅读整个RFC以了解OAuth的授权流程:https://tools.ietf.org/html/rfc6749

答案 1 :(得分:0)

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

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