Client_Id & Client_Secret 的 OAuth2 密码授权类型
OAuth2 Password Grant Type with Client_Id & Client_Secret
我正在开发一个应用程序以通过 Rest 端点访问它自己的资源。
用户需要通过 email/password 获取访问令牌。完成身份验证服务器配置后,我有这样的观察:
有:
curl client:secret@localhost:9999/uaa/oauth/token -d grant_type=password -d username=user -d password=password
我得到正确的回复:
{"access_token":"7541a4f6-e841-41a0-8a54-abf8e0666ed1","token_type":"bearer","refresh_token":"d3fdd7e3-53eb-4e7b-aa45-b524a9e7b316","expires_in":43199,"scope":"openid"}
然而:
curl http://localhost:9999/uaa/oauth/token -d grant_type=password -d username=user -d password=password -d client_id=client -d client_secret=secret
我收到以下错误:
DEBUG 4123 --- [nio-9999-exec-7] o.s.s.w.a.ExceptionTranslationFilter
: Access is denied (user is anonymous); redirecting to authentication
entry point
org.springframework.security.access.AccessDeniedException: Access is
denied at
org.springframework.security.access.vote.AffirmativeBased.decide(AffirmativeBased.java:83)
看起来 client_id 和 client_secret 在作为参数发送时未被识别。这是配置问题还是与我使用的 OAuth2 版本有关 (spring-security-oauth2, 2.0.5.RELEASE)
我在 Internet 上遇到的很多示例都建议使用 OAuth2 的方法之一。
谢谢:)
没有根据规范强制实施的授权服务器对客户端进行身份验证的方法。已指定可能支持的两种方法是 HTTP 基本身份验证模式和您在示例中使用的 HTTP POST 参数模式。显然 Spring 只支持第一个,文档似乎支持第一个:http://projects.spring.io/spring-security-oauth/docs/oauth2.html
我正在开发一个应用程序以通过 Rest 端点访问它自己的资源。
用户需要通过 email/password 获取访问令牌。完成身份验证服务器配置后,我有这样的观察:
有:
curl client:secret@localhost:9999/uaa/oauth/token -d grant_type=password -d username=user -d password=password
我得到正确的回复:
{"access_token":"7541a4f6-e841-41a0-8a54-abf8e0666ed1","token_type":"bearer","refresh_token":"d3fdd7e3-53eb-4e7b-aa45-b524a9e7b316","expires_in":43199,"scope":"openid"}
然而:
curl http://localhost:9999/uaa/oauth/token -d grant_type=password -d username=user -d password=password -d client_id=client -d client_secret=secret
我收到以下错误:
DEBUG 4123 --- [nio-9999-exec-7] o.s.s.w.a.ExceptionTranslationFilter : Access is denied (user is anonymous); redirecting to authentication entry point
org.springframework.security.access.AccessDeniedException: Access is denied at org.springframework.security.access.vote.AffirmativeBased.decide(AffirmativeBased.java:83)
看起来 client_id 和 client_secret 在作为参数发送时未被识别。这是配置问题还是与我使用的 OAuth2 版本有关 (spring-security-oauth2, 2.0.5.RELEASE)
我在 Internet 上遇到的很多示例都建议使用 OAuth2 的方法之一。
谢谢:)
没有根据规范强制实施的授权服务器对客户端进行身份验证的方法。已指定可能支持的两种方法是 HTTP 基本身份验证模式和您在示例中使用的 HTTP POST 参数模式。显然 Spring 只支持第一个,文档似乎支持第一个:http://projects.spring.io/spring-security-oauth/docs/oauth2.html