首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FOSUserBundle的FOSOAuthServerBundle -如何让它工作?

使用FOSUserBundle的FOSOAuthServerBundle -如何让它工作?
EN

Stack Overflow用户
提问于 2014-01-28 04:20:34
回答 1查看 10.1K关注 0票数 5

目前,我的项目运行得很好。我使用FOSUserBundle来管理我的用户。现在,我想实现OAuth,所以我使用FOSOAuthServerBundle。大多数开发人员推荐将此捆绑包用于实现OAuth。

我遵循了FOSOAuthServerBundle的文档。通常,我必须在我的security.yml中添加更多信息,但我不知道我到底要做什么……

这是我的security.yml:

代码语言:javascript
复制
security:
    encoders:
       Symfony\Component\Security\Core\User\User: plaintext
       Moodress\Bundle\UserBundle\Entity\User: sha512

    role_hierarchy:
       ROLE_ADMIN:       ROLE_USER
       ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
       main:
           id: fos_user.user_provider.username

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        oauth_token:
            pattern:    ^/oauth/v2/token
            security:   false

        oauth_authorize:
            pattern:    ^/oauth/v2/auth

        main:
            pattern: ^/
            fos_oauth:  true
            stateless:  true
            anonymous: true

我猜可能有一些信息需要添加到防火墙中?

我真的不知道如何用FOSUserBundle使works FOSOAuthServerBundle。在此之前,我只使用FOSUserBundle,我使用的是FOSUserBundle的登录表单和登录检查。现在我已经设置了FOSOAuthServerBundle的所有基本配置,接下来我要做什么?我应该使用哪种形式?哪种登录检查?令牌是由FOSOAuthServerBundle自动创建的吗?在文档中,他们展示了如何创建客户端...我是否应该将此代码添加到我的项目中?如果是..。在哪里?:/

我在网上找到了这篇文章:http://blog.logicexception.com/2012/04/securing-syfmony2-rest-service-wiith.html

我试图实现这一点,但我不敢相信我们需要添加所有这些文件才能使其工作……

如果有人知道如何用FOSUserBundle制作works FOSOAuthServerBundle,那将非常有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-05 20:54:19

我刚刚安装了这个包,并开始使用它。

我认为您首先需要更多地了解OAuth身份验证的工作原理。

这样,您就会了解到FOSUserBundle机制与OAuth并不完全相同。

您的链接是正确设置捆绑包的最佳信息。

我使用MongoDB存储所有4个必需的文档: Client、AuthCode、RefreshToken和AccessToken

名为“创建新客户端”的步骤基本上就是FOSUserBundle对OAuth的“注册”过程。

OAuth将使用客户端授予访问权限。

OAuth的主要思想是保护API,因此我建议您将您的配置切换为匿名: false。

然后,您将看到以下消息:

{"error":"access_denied","error_description":"OAuth2 authentication required"}

当您调用API时

OAuth的思想是获得一个访问令牌来调用你的应用程序接口。请阅读:http://blog.tankist.de/blog/2013/07/16/oauth2-explained-part-1-principles-and-terminology/

这是需要遵循OAuth身份验证过程的时候。

有5种基本的方法可以使用:

代码语言:javascript
复制
const GRANT_TYPE_AUTH_CODE = 'authorization_code';
const GRANT_TYPE_IMPLICIT = 'token';
const GRANT_TYPE_USER_CREDENTIALS = 'password';
const GRANT_TYPE_CLIENT_CREDENTIALS = 'client_credentials';
const GRANT_TYPE_REFRESH_TOKEN = 'refresh_token';

要了解每种方法,请查找有关OAuth RFC的更多文档。

它们中的每个都对应于对/oauth/v2/token?client_id=CLIENT_ID&response_type=code&redirect_uri=URL&grant_type=token的特定调用

Cf:https://github.com/FriendsOfSymfony/oauth2-php/blob/master/lib/OAuth2/OAuth2.php#L182

另请阅读此链接:blog.tankist.de/blog/2013/08/20/oauth2-explained-part-4-implementing-custom-grant-type-symfony2-fosoauthserverbundle/

“测试时间”部分解释了如何使用OAuth。

我还在努力。

希望能有所帮助。

此外,此链接还指示如何使用FOSUserBundle User & UserManager来使用密码grant_type :如果您正在对用户进行身份验证,请不要忘记设置用户提供者。

下面是一个使用FOSUserBundle用户提供程序的示例:https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/doc/index.md

代码语言:javascript
复制
# app/config/config.yml
fos_oauth_server:
    ...

    service:
        user_provider: fos_user.user_manager
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21390844

复制
相关文章

相似问题

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