keycloak~Refresh_token階段不走RequiredAction
Refresh_token是在access_token過期之后,用來換新的access_token的,有了Refresh_token之后,用戶可以在很長一段時間不需要重新登錄,這對于用戶體驗是有好處的;RequiredAction是一種登錄階段的必選行為,當一個用戶被某個RequiredAction標記之后,用戶必須完成RequiredAction,才算完成本次登錄。
Refresh_token階段是否會檢查RequiredAction
這個答案是否定的,當一個用戶登錄之后,它在后臺被標記一個RequiredAction,對于已經產生的refresh_token是不會有影響的,你拿著refresh_token還是可以直接換新的access_token。

當用戶被禁用了,Refresh_token是否會被就叫影響
這個答案是肯定的,當一個用戶的enable為false時,用戶所產生的refresh_token就無法換回新的token了,這時會有http_status為400的錯誤返回
{
"error": "invalid_grant",
"error_description": "User disabled"
}
從keycloak源代碼中也是可以看到的,位于org.keycloak.protocol.oidc.endpoints.TokenEndpoint類型的refreshTokenGrant()方法,有判斷用戶是否有效的方法,在`tokenManager.refreshAccessToken()方法中,如圖

從內部方法可以找到判斷用戶狀態的代碼,如下
if (!user.isEnabled()) {
throw new OAuthErrorException(OAuthErrorException.INVALID_GRANT, "User disabled", "User disabled");
}
如果希望refresh_token階段對用戶的required action有所控制,可以在這里添加對應的邏輯即可。
浙公網安備 33010602011771號