一、什麼是OAuth? OAuth是一個授權規範,可以使A應用在受限的情況下訪問B應用中用戶的資源(前提是經過了該用戶的授權,而A應用並不需要也無法知道用戶在B應用中的賬號和密碼),資源通常以REST API的方式暴露。 二、什麼是OAuth2.0? 有2.0自然有1.0,相比1.0,2.0有如下不 ...
一、什麼是OAuth? OAuth是一個授權規範,可以使A應用在受限的情況下訪問B應用中用戶的資源(前提是經過了該用戶的授權,而A應用並不需要也無法知道用戶在B應用中的賬號和密碼),資源通常以REST API的方式暴露。 二、什麼是OAuth2.0? 有2.0自然有1.0,相比1.0,2.0有如下不同:
- 授權過程比1.0更簡潔
- 全程使用https,保證安全的同時,又省去了1.0中對每個token都要加密的要求
- 2.0針對客戶端的各種類型,提出了多種獲取訪問令牌的途徑
- 第三方應用需要存儲資源所有者的賬號/密碼,以便將來再次使用,並且通常會以明文的方式存儲。
- 第三方應用能訪問資源所有者全部的受保護資源,資源所有者無法約束其訪問的期限以及能夠訪問的資源邊界。
- 資源所有者無法單獨取消個別第三方應用的訪問許可權,要麼全部允許,要麼全部不允許。
- resource owner:資源所有者,通常就是指終端用戶。
- resource server:資源伺服器,持有受保護的資源,能夠捕獲請求中的access token。
- client:第三方應用,需訪問資源所有者受保護資源的應用。“client”在auth中只是一個術語,統指第三方應用,與該應用的執行是在伺服器,桌面或其它設備上無關。
- authorization server:授權伺服器,負責頒發access token 給client,前提是client已經獲取了資源所有者的授權。
- (1)client請求用戶授權以訪問資源;
- (2)如果用戶授權,client會接收到一個授權許可;
- (3)client憑藉授權許可及客戶端身份標識,請求access token;
- (4)如果client身份和授權許可都認證通過,授權伺服器會頒發令牌;
- (5)client憑藉訪問令牌到資源伺服器請求資源;
- (6)如果訪問令牌有效,資源伺服器會返回相應資源給client。
- Authorization Code:授權碼
- Implicit:隱式
- Resource Owner Password Credentials:
- Client Credentials: