RefreshTokenCreator 可以根据client信息和user的信息生成一个jwt 格式的refresh token。
refresh token之后,之前的access token、id token、refresh token等都还能使用
什么情况下会生成refresh token?
首先当前client的authorizedgranttypes字段要包含refresh_code,其次还要满足如下的条件,其中isRestrictRefreshGrant是被jwt.token.refresh.restrict_grant控制的:
/**
* Check the current authorization request to indicate whether a refresh
* token should be issued or not.
*
* @param grantType the current grant type
* @param scope
* @return boolean to indicate if refresh token is supported
*/
protected boolean isRefreshTokenSupported(String grantType, Set<String> scope) {
if (!isRestrictRefreshGrant) {
return GRANT_TYPE_AUTHORIZATION_CODE.equals(grantType) ||
GRANT_TYPE_PASSWORD.equals(grantType) ||
GRANT_TYPE_USER_TOKEN.equals(grantType) ||
GRANT_TYPE_REFRESH_TOKEN.equals(grantType) ||
GRANT_TYPE_SAML2_BEARER.equals(grantType);
} else {
return scope.contains(UAA_REFRESH_TOKEN);
}
}
可以看到只有 user token 才能被 refresh 。