參考一下定義
下圖參考 RFC6749 定義的 Oauth2 中 token 使用的基本流程,看完我們就大概可以明白 Access Token 和 Refresh Token 兩個的用法了。
+--------+ +---------------+
| |--(A)------- Authorization Grant --------->| |
| | | |
| |<-(B)----------- Access Token -------------| |
| | & Refresh Token | |
| | | |
| | +----------+ | |
| |--(C)---- Access Token ---->| | | |
| | | | | |
| |<-(D)- Protected Resource --| Resource | | Authorization |
| Client | | Server | | Server |
| |--(E)---- Access Token ---->| | | |
| | | | | |
| |<-(F)- Invalid Token Error -| | | |
| | +----------+ | |
| | | |
| |--(G)----------- Refresh Token ----------->| |
| | | |
| |<-(H)----------- Access Token -------------| |
+--------+ & Optional Refresh Token +---------------+
Figure 2: Refreshing an Expired Access Token
圖解 Oauth2
客戶端登入邏輯
- A.客戶端帶有登入憑證(如:三方微信認證、自家用戶名密碼等)請求授權服務器
- B.授權服務器返回 ac_token 和 rf_token
客戶端業務邏輯
- C.客戶端帶有 ac_token 請求業務服務器(例如用戶資料、用戶訂單等等)
- D.業務服務器驗證 ac_token,且成功,則返回業務數據
- E.若客戶端帶有的 ac_token(失效、過期等)請求業務服務器
- F.業務服務器驗證失敗,則返回 token error
刷新 Access Token 邏輯
- G.客戶端帶上 rf_token 請求授權服務器
- H.授權服務器真對 rf_token 驗證且通過后,返回新的 ac_token 和 rf_token
安全性思考
- Access Token 越短越安全,但是短了影響用戶體驗
- Refresh Token 一定保密不可泄漏,同時最好加入一些特征判定看下一條
- Refresh Token 刷新必須判定用戶的合法性,例如 UA、IP 等資料,也可以是自己與客戶端約定的一些特征資料
- Refresh Token 可以利用用戶的 Ua 等特征資訊,進行限定登陸設備數量(也就是一個用戶同時可以擁有幾個 Refresh Token),同時給用戶一個觀看當前在線設備列表,讓用戶真實了解在線設備的安全性,選擇性讓某設備掉線。
我記得 Pipe 里面的同步是定時的,30s 一次輪詢。
好的呢,我觀察日志來說,發現的不同如下
可能是發表文章底部的按鈕那里沒能正常觸發同步 api 吧
暫時沒有時間排查,Pipe 是開源的歡迎幫忙 debug,謝謝。
@88250 老大,為啥自建的 pipe 發博文時,底下勾選同步到社區不生效了啊!必須在文章列表那的編輯按鈕下拉里面的同步方可生效,是我自己搭建的部落格有什么地方沒弄好嗎?