聊聊 OAuth 2 0 的 Token 續期處理

2021-10-06 22:33:59 字數 2646 閱讀 8307

// checktokenendpoint.checktoken

@responsebody

public mapchecktoken(@requestparam("token") string value)

if (token.i***pired())

// 根據 token 查詢儲存的 認證資訊 還有許可權角色等 (業務資訊)

oauth2authentication authentication = resourceservertokenservices.loadauthentication(token.getvalue());

return accesstokenconverter.convertaccesstoken(token, authentication);

}

**邏輯

public oauth2accesstoken createaccesstoken(oauth2authentication authentication) throws authenticationexception

tokenstore.removeaccesstoken(existingaccesstoken);

}else

}// 不存在則建立新的 token

若上,當 前端拿著正確的(未過期且未使用過)refresh_token去呼叫 認證中心的重新整理 端點重新整理時,會 觸發refreshtokengranter, 返回新的token

public class refreshtokengranter extends abstracttokengranter 

}

createrefreshedauthentication(authentication, tokenrequest);

if (!reuserefreshtoken)

oauth2accesstoken accesstoken = createaccesstoken(authentication, refreshtoken);

tokenstore.storeaccesstoken(accesstoken, authentication);

if (!reuserefreshtoken)

return accesstoken;

}

##  客戶端(前端)何時重新整理

### 被動重新整理

!(1. 客戶端攜帶 `token` 訪問資源伺服器資源

2. 資源伺服器攔截 `token` 去認證伺服器 `check_token`

3. 認證伺服器返回 `token` 過期錯誤,資源伺服器包裝錯誤資訊返回給客戶端

4. 客戶端根據返回錯誤資訊(響應碼),直接呼叫認證伺服器 `refresh_token`

5. 認證伺服器返回新的 `token` 給客戶端, 然後再次發起 資源呼叫

被動請求的缺點是,使用者當次請求會失敗(返回token失敗),對一些業務連貫的操作不是很友好

### 主動重新整理

!(1. 客戶端存在計算邏輯,計算下發token 有效期

2. 若token要過期之前,主動發起重新整理

主動請求的缺點是,客戶端占用部分計算資源來處理 `token` 失效問題

// 10s檢測token 有效期 refreshtoken() ) if (this.validatenull(token)) if (this.expires_in <= 1000 && !this.refreshlock) ) this.refreshlock = false } this.$store.commit('set_expires_in', this.expires_in - 10) }, 10000) },

『★★★★★』 基於spring boot 2.2、 spring cloud hoxton & alibaba、 oauth2 的rbac 許可權管理系統

OAuth2 0與前端無感知token重新整理實現

如果通過oauth訪問成功,網盤就可以從qq中獲取乙個名為access token的令牌。通過該token,便可訪問qq中使用者允許訪問的資訊。oauth最主要的優點在於它是一種被廣泛認可的認證機制,並且已經實現了標準化。其中resource owner password credential模式就...

oAuth 2 0協議解析

部落格 完整的oauth 2.0協議流包括4個主體,6個步驟。4個主體分別是 資源擁有者 可以是人,負責授權工作。對open api來說,即發布方。發布方審批呼叫者的申請,通過後,即完成授權,體現為資料庫中的記錄。客戶端 一般是第三方應用程式。對於open api來說,即呼叫者。授權伺服器 負責完成...

OAuth 2 0系列教程

作者 jakob jenkov譯者 林浩校對 郭蕾 oauth是openid的乙個補充,但是完全不同的服務。oauth 2.0 是目前比較流行的做法,它率先被google,yahoo,microsoft,facebook等使用。之所以標註為 2.0,是因為最初有乙個1.0協議,但這個1.0協議被弄得...