oauth2基本概念
1.什么是oauth2
2.為什么用oauth2
業務系統 需要實現幾種登錄形式
3.怎么用oauth2
4.oauth中的角色
OAuth 定義了四個角色:
4.1 Resource owner 資源擁有者(用戶)
能夠授予對受保護資源的訪問權限的實體。當資源所有者是一個人時,它被稱為最終用戶
Resource Server 資源服務器
托管受保護資源的服務器,能夠使用訪問令牌接受和響應受保護資源請求
Client 客戶端
代表資源所有者并經其授權發出受保護資源請求的應用程序。“客戶”一詞確實 不暗示任何特定的實現特征(例如, 應用程序是否在服務器、桌面或其他 設備上執行)。
Authorization server 授權服務器
服務器在成功 驗證資源所有者并獲得授權后向客戶端頒發訪問令牌。授權服務器和資源服務器之間的交互超出了本規范的范圍。授權服務器 可以是與資源服務器相同的服務器,也可以是單獨的實體。 單個授權服務器可以發布多個資源服務器接受的訪問令牌。
5.認證流程參考
6.Oauth2 的四種認證模式的流程
6.1 Authorization Code (授權碼模式)
應用場景
這種方式是最常用的流程,安全性也最高,它適用于那些有后端的 Web 應用。授權碼通過前端傳送,令牌則是儲存在后端,而且所有與資源服務器的通信都在后端完成。這樣的前后端分離,可以避免令牌泄漏
流程
1:用戶訪問頁面
2:訪問的頁面將請求重定向到認證服務器
3:認證服務器向用戶展示授權頁面,等待用戶授權
4:用戶授權,認證服務器生成一個code和帶上client_id發送給應用服務器
然后,應用服務器拿到code,并用client_id去后臺查詢對應的client_secret
5:將code、client_id、client_secret傳給認證服務器換取access_token和
refresh_token
6:將access_token和refresh_token傳給應用服務器
7:驗證token,訪問真正的資源頁面
6.2 Resource Owner Password Credentials Grant(密碼模式)
應用場景
如果你高度信任某個應用,RFC 6749 也允許用戶把用戶名和密碼,直接告訴該應用。該應用就使用你的密碼,申請令牌,這種方式稱為"密碼式"(password)
流程
1:用戶訪問用頁面時,輸入第三方認證所需要的信息(QQ/微信賬號密碼)
2:應用頁面那種這個信息去認證服務器授權
3:認證服務器授權通過,拿到token,訪問真正的資源頁面
6.3 Implicit Grant (隱式授權模式)
應用場景
有些 Web 應用是純前端應用,沒有后端。這時就不能用上面的方式了,必須將令牌儲存在前端。RFC 6749 就規定了第二種方式,允許直接向前端頒發令牌。這種方式沒有授權碼這個中間步驟,所以稱為(授權碼)“隱藏式”(implicit)
流程
1:用戶訪問頁面時,重定向到認證服務器。
2:認證服務器給用戶一個認證頁面,等待用戶授權。
3:用戶授權,認證服務器想應用頁面返回Token
4:驗證Token,訪問真正的資源頁面
6.4 Client Credentials Grant (客戶端憑證模式)
應用場景
適用于沒有前端的命令行應用,即在命令行下請求令牌
流程
1:用戶訪問應用客戶端
2:通過客戶端定義的驗證方法,拿到token,無需授權
3:訪問資源服務器A
4:拿到一次token就可以暢通無阻的訪問其他的資源頁面
如果你高度信任某個應用,RFC 6749 也允許用戶把用戶名和密碼,直接告訴該應用。該應用就使用你的密碼,申請令牌,這種方式稱為"密碼式"(password)
7 刷新token原理
總結
以上是生活随笔為你收集整理的oauth2基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web安全CSRF攻击与防御
- 下一篇: 程序员应该抛弃的10种思维定式