Spring oauth jwt浏览器在curl失败时工作

Posted

技术标签:

【中文标题】Spring oauth jwt浏览器在curl失败时工作【英文标题】:Spring oauth jwt browser works while curl fails 【发布时间】:2018-03-27 06:09:23 【问题描述】:

我已经关注了这个博客的 spring oauth jwt:https://medium.com/@nydiarra/secure-a-spring-boot-rest-api-with-json-web-token-reference-to-angular-integration-e57a25806c50

在 Chrome 或 IE edge 等浏览器中,当我转到 https://infinite-tundra-6984.herokuapp.com/springjwt/cities 时,系统会提示我输入用户名和密码。

标准用户:

用户名:john.doe

密码:jwtpass

对于管理员:

用户名:admin.admin

密码:jwtpass

它按预期工作。

但是,当我使用 curl 时:

curl testjwtclientid:MaYzkSjmkzPC57L@infinite-tundra-6984.herokuapp.com/oauth/token -d grant_type=password -d username=admin.admin -d password=jwtpass

我得到一个像这样的令牌: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsidGVzdGp3dHJlc291cmNlaWQiXSwidXNlcl9uYW1lIjoiYWRtaW4uYWRtaW4iLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXSwiZXhwIjoxNTA4MTMxNzQwLCJhdXRob3JpdGllcyI6WyJTVEFOREFSRF9VU0VSIiwiQURNSU5fVVNFUiJdLCJqdGkiOiIyNjVmYmY5OS0wYWU3LTQ0MmQtOThjNy03ZTkxMmFhYWZlNWYiLCJjbGllbnRfaWQiOiJ0ZXN0and0Y2xpZW50aWQifQ.exXHqinGAfoPYLFYxhiWIsEg1FSSHxw34Snxdk0AqnU P>

然后我做:

卷曲https://infinite-tundra-6984.herokuapp.com/springjwt/cities -H “授权:承载eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsidGVzdGp3dHJlc291cmNlaWQiXSwidXNlcl9uYW1lIjoiYWRtaW4uYWRtaW4iLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXSwiZXhwIjoxNTA4MTMxNzQwLCJhdXRob3JpdGllcyI6WyJTVEFOREFSRF9VU0VSIiwiQURNSU5fVVNFUiJdLCJqdGkiOiIyNjVmYmY5OS0wYWU3LTQ0MmQtOThjNy03ZTkxMmFhYWZlNWYiLCJjbGllbnRfaWQiOiJ0ZXN0and0Y2xpZW50aWQifQ.exXHqinGAfoPYLFYxhiWIsEg1FSSHxw34Snxdk0AqnU” P>

我收到了 401

有人可以给我一些关于访问安全内容的两种方式之间的区别的提示吗?

似乎,通过 curl/token 访问,它无法确定我的角色

【问题讨论】:

【参考方案1】:

我错过了这一步。

在application.properties中,我需要添加这一行:

security.oauth2.resource.filter-order = 3

这让我花了很多时间

【讨论】:

以上是关于Spring oauth jwt浏览器在curl失败时工作的主要内容,如果未能解决你的问题,请参考以下文章

Spring + Oauth2 + JWT+ Websocket

没有 OAuth 的 Spring 安全 JWT

Spring OAuth + JWT -- /oauth/token

oauth 2.0、JWT、Spring 安全、微服务

完成 - Spring Security JWT Token_Key

Spring Boot:在标头中发送 JWT(OAuth)