1. OAuth2簡易實戰(一)-四種模式
1.1. 隱式受權模式(Implicit Grant)
- 第一步:用戶訪問頁面時,重定向到認證服務器。
- 第二步:認證服務器給用戶一個認證頁面,等待用戶受權。
- 第三步:用戶受權,認證服務器想應用頁面返回Token
- 第四步:驗證Token,訪問真正的資源頁面
1.2. 受權碼受權模式(Authorization code Grant)
- 第一步:用戶訪問頁面
- 第二步:訪問的頁面將請求重定向到認證服務器
- 第三步:認證服務器向用戶展現受權頁面,等待用戶受權
- 第四步:用戶受權,認證服務器生成一個code和帶上client_id發送給應用服務器
- 而後,應用服務器拿到code,並用client_id去後臺查詢對應的client_secret
- 第五步:將code、client_id、client_secret傳給認證服務器換取access_token和
- refresh_token
- 第六步:將access_token和refresh_token傳給應用服務器
- 第七步:驗證token,訪問真正的資源頁面
案例Github自取:https://github.com/PinkPig-cq/springSecurityoAuth
1.3. 密碼模式(Resource Owner Password Credentials Grant)
- 第一步:用戶訪問用頁面時,輸入第三方認證所須要的信息(QQ/微信帳號密碼)
- 第二步:應用頁面那種這個信息去認證服務器受權
- 第三步:認證服務器受權經過,拿到token,訪問真正的資源頁面
優勢:不須要屢次請求轉發,額外開銷,同時能夠獲取更多的用戶信息。(都拿到帳號密碼了)
缺點:侷限性,認證服務器和應用方必須有超高的信賴。(好比親兄弟?)
應用場景:自家公司搭建的認證服務器
1.4. 客戶端憑證模式(Client Credentials Grant)
- 第一步:用戶訪問應用客戶端
- 第二步:經過客戶端定義的驗證方法,拿到token,無需受權
- 第三步:訪問資源服務器A
- 第四步:拿到一次token就能夠暢通無阻的訪問其餘的資源頁面。
這是一種最簡單的模式,只要client請求,咱們就將AccessToken發送給它。這種模式是最方便但最不安全的模式。所以這就要求咱們對client徹底的信任,而client自己也是安全的。
所以這種模式通常用來提供給咱們徹底信任的服務器端服務。在這個過程當中不須要用戶的參與。