0

我正在集成 FOSOAuthServerBundle 来处理从移动应用程序到 Symfony2 后台的登录。我已按照此答案的说明进行操作,但由于我以前从未使用OAuth2过,因此有时我会有些迷茫。

我尝试使用“密码”登录,但由于某种原因,除非我将其指定为参数grant_type,否则它将无法正常工作。我真的应该吗?client_secretGET

这是我的请求的样子:

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"}

4

2 回答 2

2

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

于 2014-11-14T13:09:33.903 回答
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]

希望这可以为您澄清更多。

于 2014-11-12T17:01:21.237 回答