目前,我的项目运行得很好。我使用FOSUserBundle来管理我的用户。现在,我想实现OAuth,所以我使用FOSOAuthServerBundle。大多数开发人员推荐将此捆绑包用于实现OAuth。
我遵循了FOSOAuthServerBundle的文档。通常,我必须在我的security.yml中添加更多信息,但我不知道我到底要做什么……
这是我的security.yml:
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,那将非常有帮助。
发布于 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种基本的方法可以使用:
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
“测试时间”部分解释了如何使用OAuth。
我还在努力。
希望能有所帮助。
此外,此链接还指示如何使用FOSUserBundle User & UserManager来使用密码grant_type :如果您正在对用户进行身份验证,请不要忘记设置用户提供者。
下面是一个使用FOSUserBundle用户提供程序的示例:https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/doc/index.md
# app/config/config.yml
fos_oauth_server:
...
service:
user_provider: fos_user.user_managerhttps://stackoverflow.com/questions/21390844
复制相似问题