0、OAuth2解決的問題域和場景
- 開放系統間的授權:社交聯合登錄、開放平台。
- web頁面、原生app、微服務和API間調用。
- 企業內部應用認證授權(IAM/SSO)。
1、白話OAuth2
- 什么是OAuth2:是一種認證授權機制。
- 資源擁有者、客戶應用、資源、授權服務器。
- 授權服務器:生成、頒發access_token。
- 客戶端應用:使用access_token來訪問用戶資源。
2、OAuth2的定義
- OAuth2是一種授權框架,不是一種認證協議,僅用於授權代理。
- OAuth不支持Http以外的協議
- OAuth並不是一個認證協議
- OAuth並沒有定義授權處理機制
- OAuth並沒有定義token格式
- OAuth2.0並沒有定義加密方法
- OAuth2.0並不是單個認證協議,是一組協議。
OAuth本質:如何獲取token、如何使用token
OAuth是一種在系統間的代理授權
OAuth使用代理協議的方式解決密碼共享的反模式問題。
OAuth提供一個寬泛的協議框架,具體的安全場景需要定制。
3、OAuth2有哪些典型模式
- 授權碼模式:
- 簡化模式
- 密碼模式
- 使用用戶名密碼登錄的應用,例如桌面app、手機app。
- 使用用戶名密碼作為授權方式,從授權服務器上獲取access_token。
- 一般不支持refresh_token
- 假定資源擁有者和公開客戶在相同設備上。
- 客戶端模式:主要用於機器間的調用。
(當token失效之后,可以用refresh_token獲取新的access_token)
4、OAuth2模式如何選型
客戶端的類型:
- 公開:原生app 、web app用戶直接接觸的應用
- 私密:服務之間的調用,非用戶直接操作的。
選型流程: