Spring Boot:访问此资源需要完全身份验证

Posted

技术标签:

【中文标题】Spring Boot:访问此资源需要完全身份验证【英文标题】:Spring Boot: Full authentication is required to access this resource 【发布时间】:2016-10-03 10:01:53 【问题描述】:

我在这篇文章https://github.com/angel-git/wso2is-springoauth 中使用 wso2is 服务器做 Spring Boot Security 示例,当我尝试使用访问令牌访问资源时,我得到了

"error":"unauthorized","error_description":"访问此资源需要完全认证"

我正在通过以下方式生成访问令牌:

curl -u CLIENT_ID:CLIENT_SECRET -k -d “授予类型=密码&用户名=管理员&密码=管理员”-H “内容类型:应用程序/x-www-form-urlencoded” https://localhost:9443/oauth2/token

并通过以下方式访问资源:

curl -H GET "授权:ACCESS_TOKEN" http://localhost:8080/greeting

我在 *** 上找到了很多解决方案,但遗憾的是无法解决我的问题

请帮忙,谢谢

【问题讨论】:

使用Authorization: Bearer ACCESS_TOKEN格式发送不记名令牌 谢谢回复,我还是遇到同样的问题 你用过curl -H "Authorization: Bearer ACCESS_TOKEN" http://localhost:8080/greeting吗?删除GET 现在给出 "error":"access_denied","error_description":"Access is denied" 我猜你没有所需的角色 【参考方案1】:

非常感谢帮助我解决问题的 Angel Gavalda。我使用以下命令生成访问令牌和访问资源

用于生成访问令牌:-

卷曲 -k -d 'grant_type=client_credentials&client_id=yourClientId&client_secret=yourClientSecret' https://localhost:9443/oauth2/token

对于访问资源:-

curl -k -H "授权:承载 $ACCESS_TOKEN" http://localhost:8080/greeting

【讨论】:

当我尝试访问资源时,我收到“请联系您的管理员”。我使用了错误的请求网址吗?我尝试了另一个 url,我收到了操作正在获取的错误消息。 @Jesse 你是如何访问资源的? @GelSisaed 来自邮递员,这很简单。从 wso2 获取令牌,然后通过提供 Authz 类型作为承载令牌来访问您的服务。【参考方案2】:

我收到了同样的错误消息

"curl http://localhost:8080/spring4/beans" :
"timestamp":1493591079040,"status":401,"error":"Unauthorized","message":"Full authentication is required to access this resource.","path":"/spring4/beans"

application.properties 中设置以下属性绕过了安全检查,我可以使用所有 acuator 端点:

management.security.enabled=false

【讨论】:

不知何故,我怀疑绕过安全性对于尝试使用 Spring 安全性的人来说是正确的答案。 是的,我只是用它来测试。必须使用令牌等以获得完全的安全性。【参考方案3】:

如果上述答案不能解决此问题,请将文件api-manager.xml 中的OAuthConfigurations/RemoveOAuthHeadersFromOutMessage 更改为false

【讨论】:

以上是关于Spring Boot:访问此资源需要完全身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security OAuth - 访问此资源需要完全身份验证

访问此资源需要完全身份验证 - 休息 web 服务调用

POST 请求“访问此资源需要完全身份验证”

InsufficientAuthenticationException:访问此资源需要完全身份验证

出现未经授权的错误:需要完全身份验证才能访问此资源

Spring Boot 基于角色的身份验证