我已按照本指南https://auth0.com/blog/implementing-jwt-authentication-on-spring-boot/在我的网络应用程序中实现访问令牌,并且工作正常。但是,本指南未提及有关刷新令牌的任何内容。
任何人都可以帮我解决如何在Java Spring Boot中实现它的问题吗?或者还有其他方法可以让用户登录吗?
答案 0 :(得分:1)
Spring提供了在正确配置时获取新访问令牌的功能,即authorizedGrantTypes
包含"refresh_code"
。
您应该使用刷新令牌通过使用令牌端点来获取新的访问令牌,如下所示:
curl -H "Authorization: Bearer [base64encode(clientId:clientSecret)]" "https://yourdomain.com/oauth/token?grant_type=refresh_token&refresh_token=[yourRefreshToken]"
示例:
curl -X POST -H 'Authorization: Basic dGVzdGNsaWVudDpzZWNyZXQ=' -d 'refresh_token=fdb8fdbecf1d03ce5e6125c067733c0d51de209c&grant_type=refresh_token' localhost:3000/oauth/token
{
"token_type":"bearer",
"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiVlx1MDAxNcKbwoNUwoonbFPCu8KhwrYiLCJpYXQiOjE0NDQyNjI4NjYsImV4cCI6MTQ0NDI2Mjg4Nn0.Dww7TC-d0teDAgsmKHw7bhF2THNichsE6rVJq9xu_2s",
"expires_in":20,
"refresh_token":"7fd15938c823cf58e78019bea2af142f9449696a"
}
如此处所述:https://auth0.com/blog/refresh-tokens-what-are-they-and-when-to-use-them/
答案 1 :(得分:0)
Ref - Spring Boot + Refresh Expired JWT Implementation
一旦JWT过期,则用户/系统将调用另一个假定/ refreshtoken的URL。与此请求一起,还应传递过期的JWT。然后,服务器将返回一个可由用户/系统使用的新JWT。