首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular2和symfony3 FOSOAuthServerBundle授权

Angular2和symfony3 FOSOAuthServerBundle授权
EN

Stack Overflow用户
提问于 2017-03-20 07:38:17
回答 2查看 818关注 0票数 0

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

  1. 我尝试了“令牌”端点方法,但在那里,我必须发送client_id和client_secret,从我的angular2应用程序。我认为在公共场合存储client_secret是不好的。
  2. “授权”端点不使用client_secret,而是要求登录表单,这对我的情况不好。
  3. 我尝试了自定义授予扩展,但是FOSOAuthServerBundle也需要用client_secret验证客户端。

什么是最佳实践授权使用symfony的angular2?把client_secret存储在前端可以吗?还是应该扩展FOSOAuthServerBundle并删除client_secret检查?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-20 08:10:10

你对client_secret的看法是正确的。更广泛地公开秘密密钥是不正确的做法。

不幸的是,目前FOSOAuthBundle并不适合您的需要。这个包只关注后端OAuth客户端。他们在github上有一个公开的问题来增加对公共客户端的支持:https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/issues/266

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

票数 1
EN

Stack Overflow用户

发布于 2019-06-06 13:46:05

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

代码语言:javascript
复制
public function checkSecret($secret)
    {
        if (in_array("authorization_code", $this->getAllowedGrantTypes())) {
            return true;
        }
        return parent::checkSecret($secret);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42898137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档