Symfony2 FOSOAuthServerBundle授予类型密码需要客户端密钥

时间:2014-11-12 16:41:41

标签: php symfony oauth-2.0 fosoauthserverbundle

我正在整合FOSOAuthServerBundle来处理从移动应用程序到Symfony2后台的登录。我已按照this answer的说明操作了,但在我有时丢失之前,我从未使用过OAuth2

我尝试使用'密码'登录grant_type但由于某种原因,除非我将client_secret指定为GET参数,否则它无法工作。我真的应该这样做吗?

这是我的要求:

http://myserv.local/app_dev.php/oauth/v2/token ?client_id=1_4up4x3hpaask4g0sok0so8sg00gk48c44cc0wkwwsg8048wcog &grant_type=password &username=test@test.com &password=somepassword

除非添加client_secret参数,否则它将返回此响应:

{"error":"invalid_client","error_description":"The client credentials are invalid"}

2 个答案:

答案 0 :(得分:2)

是的,您应该包含客户端密钥。一旦发出此请求,您将获得一个access_token,可以与每个未来请求一起使用,这样您就不需要再次使用凭据或客户端信息,直到access_token到期为止。当令牌过期时,即使这样您也不需要再次使用用户凭据,您可以使用refresh_token以及客户端ID和机密来获取新的access_token。因此,您的初始请求应如下所示:

http://localhost/oauth/v2/token?client_id=[CLIENT_ID]&client_secret=[SECRET]&grant_type=password&username=[USERNAME]&password=[PASSWORD]

在响应中,您将获得access_token,可以像这样使用:

http://localhost/api/users?access_token=[ACCESS_TOKEN]

希望这能为您澄清一点。

答案 1 :(得分:2)

当您使用唯一允许的授予类型“password”创建新客户端时,这不应该是客户端机密是公开的安全问题,并且没有人能够将其与client_credential grant一​​起使用。

相关问题