我想将我的angular2前端应用程序与symfony后端连接。所以我使用FOSOAuthServerBundle(https://github.com/FriendsOfSymfony/FOSOAuthServerBundle)来授权我的前端应用程序,但我不清楚如何实现它。
我尝试了“令牌”端点方法,但我必须从我的angular2应用程序发送client_id和client_secret。而且我认为将client_secret存储在公共场所是不好的。
“授权”端点不使用client_secret,但要求登录表单,这对我的情况不利。
我尝试了自定义授权扩展,但FOSOAuthServerBundle还需要使用client_secret验证客户端。
什么是最佳做法使用symfony授权angular2?可以将client_secret存储在前端吗?或者我应该扩展FOSOAuthServerBundle并删除client_secret检查?
答案 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);
}