我正在使用FusionAuth进行身份验证。在FusionAuth中创建了一个应用程序。它已配置了oAuth。
http://localhost:9011/oauth2/authorize?access_type=offline&prompt=consent&response_type=code&client_id=9ecc54b7-6f79-4105-a208-ca61e6157b58&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fipos%2Frest%2FfusionAuth%2FcallBack
这是我的FusionAuth登录页面的授权URL。
一旦点击链接并输入用户名和密码,我就会在我的Java jersey API中通过已配置的回调URL进行回调。
我在回叫请求中得到以下详细信息。
code - dZgq5Xd0YmAQXZ2JIzkih832iojimgLUPwT7yoH9-TY
locale - en_US
userState - AuthenticatedNotRegistered
在这里,我使用Scribe Java库进行OAuth身份验证
我进行调用以使用给定的授权代码来获取访问令牌调用uscrib Scribe java libary,并且grant_type为authorization_code。
在这里,此调用成功,并且在响应中获得了以下详细信息。
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImRRZTA1Uk1vN19oVjZUUnpLVUQ1aXpRU2NSOCJ9.eyJhdWQiOiI5ZWNjNTRiNy02Zjc5LTQxMDUtYTIwOC1jYTYxZTYxNTdiNTgiLCJleHAiOjE1Nzc3MTg0NjgsImlhdCI6MTU3NzcxODM0OCwiaXNzIjoiYWNtZS5jb20iLCJzdWIiOiI3ZWE3OWRhZi1hZjExLTQ1MTUtODljYS1iOGFjYTFjN2I5YTEiLCJhdXRoZW50aWNhdGlvblR5cGUiOiJQQVNTV09SRCIsImVtYWlsIjoiZGhhdmFsYmhvb3Q5M0BnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwicHJlZmVycmVkX3VzZXJuYW1lIjoiZGhhdmFsYmhvb3QifQ.eA0Xi6nEZhWaTMd-P26ESdE3NsyXNRNVBKBdBvHxvzfHgXYJiN2pf-16mY8JK-4-1g3vZF7Cwv-SkP4iZAIJCYYc3uBW8Qlcjjn9cyi7_RggBBBsErcs2acRIt-D5NpnVJfkxHwGAs9fO6a2Win98GGYyv1nzBG9OhWkyZJTy4QxzlgXNrkQIzTuzRwLkRFzKCT95pqfsOYb_MXPuAksg5q1SHIj8qtbO7EO-vMbpmiok1C-Wflbiq2X_tq17QBKbO4JAMLm9_pCZse1tqLyNP4fIh3VHTz7OdbbXvug2Tpk_yTWLVL_29XC87-91R5iXeezLjADkdi1yXMUdHioOw",
"expires_in": 119,
"token_type": "Bearer",
"userId": "7ea79daf-af11-4515-89ca-b8aca1c7b9a1"
}
在这里,无论如何,无论是用户首次登录还是在任何情况下,我都没有得到refresh_token。
这是JWT令牌,我将到期时间减少到120秒。
在应用程序OAuth设置中,我启用了生成刷新令牌选项。
我这里唯一的问题是,我没有收到刷新令牌。
帮助我。
谢谢。
最佳答案
要获得“授权代码授予”的刷新令牌,您需要请求offline_access
范围。
https://fusionauth.io/docs/v1/tech/oauth/endpoints#authorization-code-grant-request
您可以按以下方式修改您的请求(添加了换行符以提高可读性)
http://localhost:9011/oauth2/authorize?
scope=offline_access
&prompt=consent
&response_type=code
&client_id=9ecc54b7-6f79-4105-a208-ca61e6157b58
&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fipos%2Frest%2FfusionAuth%2FcallBack
附带说明一下,添加
prompt=consent
很好,但不会影响请求,因为FusionAuth尚不可用。如果您希望在即将发布的版本中看到此功能,请对其进行投票。 https://github.com/FusionAuth/fusionauth-issues/issues/411