Java 如何在spring boot 2 oauth2中获得令牌?

Java 如何在spring boot 2 oauth2中获得令牌?,java,spring-boot,spring-security,spring-security-oauth2,Java,Spring Boot,Spring Security,Spring Security Oauth2,我是春天新来的。我想运行这个。我成功地运行了它,对于get token,我将postman设置为如下,然后发送请求: 在本例中,我输入了带有密码的客户机id,但我想在没有密码的情况下登录。例如,我的用户发送用户名、密码和客户端id,然后获取令牌。但我发送的每个请求,服务器都会返回401响应。在oauth 2中,我怎么做?1)要获取访问令牌您必须使用这样的请求: curl——用户客户端:机密\ -X柱http://localhost:8080/oauth/token \ -H“内容类型:应用程

我是春天新来的。我想运行这个。我成功地运行了它,对于get token,我将postman设置为如下,然后发送请求:

在本例中,我输入了带有密码的客户机id,但我想在没有密码的情况下登录。例如,我的用户发送用户名、密码和客户端id,然后获取令牌。但我发送的每个请求,服务器都会返回401响应。在oauth 2中,我怎么做?1)要获取访问令牌您必须使用这样的请求:

curl——用户客户端:机密\
-X柱http://localhost:8080/oauth/token \
-H“内容类型:应用程序/x-www-form-urlencoded”\
-d“授权类型=密码和用户名=用户名和密码=密码和范围=*”\
使用Basic Auth和您的应用程序凭据(如果愿意,您可以避免这个秘密)。您必须在请求正文中传递的用户名和密码,以及
grant\u type
字段中的“password”值

作为响应,您将获得访问权并刷新令牌,例如:

{
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2VtYWlsIjoidXNlckBtYWlsLmNvbSIsInVzZXJfbmFtZSI6InVzZXIiLCJzY29wZSI6WyIqIl0sImV4cCI6MTU0Nzc2NDIzOCwiYXV0aG9yaXRpZXMiOlsiQURNSU4iXSwianRpIjoiYzk1YzkzYTAtMThmOC00OGZjLWEzZGUtNWVmY2Y1YWIxMGE5IiwiY2xpZW50X2lkIjoiY2xpZW50In0.RWSGMC0w8tNafT28i2GLTnPnIiXfAlCdydEsNNZK-Lw",
    "token_type": "bearer",
    "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2VtYWlsIjoidXNlckBtYWlsLmNvbSIsInVzZXJfbmFtZSI6InVzZXIiLCJzY29wZSI6WyIqIl0sImF0aSI6ImM5NWM5M2EwLTE4ZjgtNDhmYy1hM2RlLTVlZmNmNWFiMTBhOSIsImV4cCI6MTU0Nzc2NzcxOCwiYXV0aG9yaXRpZXMiOlsiQURNSU4iXSwianRpIjoiZDRhNGU2ZjUtNDY2Mi00NGZkLWI0ZDgtZWE5OWRkMDJkYWI2IiwiY2xpZW50X2lkIjoiY2xpZW50In0.m7XvxwuPiTnPaQXAptLfi3CxN3imfQCVKyjmMCIPAVM",
    "expires_in": 119,
    "scope": "*"
    "jti": "c95c93a0-18f8-48fc-a3de-5efcf5ab10a9"
}
2) 然后,您可以使用该访问令牌访问服务器应用程序的资源。在这种情况下,您需要承载令牌身份验证类型和您的访问令牌:

curl-X GEThttp://localhost:8080/demo \
-H'授权:持票人EYJHBCIOIJIUZI1NIISINR5CCI6IKPXVCJ9.EYJ1C2VYX2VTYWLSIZLNLKBTYWLSNVZJFBMFTZSI6INVZZXIIZY29WZI6WYIQI0SIMV4CCI6MTU0NZC2NZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZIZYYYYYYY2Z
3) 要刷新令牌,您必须再次使用带有客户端凭据的基本身份验证,但在这种情况下,您需要“刷新令牌”作为
授权类型

curl——用户客户端:机密\
-X柱http://localhost:8080/oauth/token \
-H'内容类型:应用程序/x-www-form-urlencoded'\
-d“授权类型=刷新令牌&范围=*&刷新令牌=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.EYJ1C2VYX2VTYWLSIJOIDxNLCKBTYWLSNVBSI6INVZXIILCJZY29WZSI6WYIQIL0SIMF0ASIm5NWM5M2EWLTE4JGTNZMFIxV4CCIxNZY2NZC2NZOCWIV0AG9YAXRPZIDI0ZIOLZYOLWIW2Z2WIK2WIZZ2ZZZZY2ZZZYW2WIZ2ZZZZZZZ2WIZZZZ2WIZ2ZZZZ2WIK2IK2WIZ2ZZZZZZZZZZZZZZ2WIZ2WIZZZZZZZZ2WIZZZZZZ2WIZzw50x2lkijoi2xpzw50in0.m7XvxwuPiTnPaQXAptLfi3CxN3imfQCVKyjmMCIPAVM'
每次访问令牌过期时,您都必须使用第三个请求刷新它。然后您将能够再次访问这些资源

其他信息

1) 我的回答

(二)


3)

OAuth 2.0规范描述了客户端应用程序获取访问令牌(表示用户对客户端访问其数据的权限)的许多授权(“方法”)

Spring OAuth2预定义的授权类型:

  • 客户认证令牌格兰特
  • 格兰特酒店
  • 授权代码令牌格兰特
  • 含蓄的
  • ResourceOwnerPasswordTokenGranter(您在示例中使用的密码授予类型)
如果要更改令牌获取逻辑,可以使用自定义令牌授予器

附加:


请发布您的Web安全配置适配器和授权服务器ConfigureRadapter和。在此处发布您的401响应邮递员屏幕截图{“时间戳”:“2018…”,“状态”:401,“错误”:“未授权”,“消息”:“未授权”,“路径”:“/oauth/token”}您使用
是什么意思,但我想不使用主题登录