OAuth2學習筆記


參考:https://aaronparecki.com/oauth-2-simplified/

1、角色定義

應用程序(客戶)

       需要獲取用戶的賬號信息,獲得相關權限。

 

API服務器

       資源服務器就是API服務器,用於獲得用戶的信息。

 

授權服務器

       為用戶提供交互界面,確認授權請求。一般來說,和API 服務器是同一台服務器。

 

用戶

       可對外提供部分賬戶信息的人。

 

2、創建APP

注冊APP信息,一般包括名稱,網站和重定向地址。

任何Http重定向地址都必須是使用TLS安全協議的,意味着地址以https開頭。原生應用的重定向地址可以使用一個自定義的URL方案,例如demoapp://redirect。

3、Authorization Code授權方式

3.1、Web服務器應用

邏輯代碼運行在服務器上。

創建一個登陸的連接:

https://oauth2server.com/auth?response_type=code&

  client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=photos&state=1234zyx

 

code:代表Web服務器希望能獲得一個authorization code。

scope: 一個或多個希望獲取的賬號部分信息。

state: 一個隨機生成的,用於驗證的字符串。

如果用戶同意授權,則返回以下鏈接:

https://oauth2client.com/cb?code=AUTH_CODE_HERE&state=1234zyx

code: 代表返回的authorization code。

state: 返回和請求相同的驗證字符串。

Web服務器通過authorization code獲得訪問令牌。

POST https://api.oauth2server.com/token
  grant_type=authorization_code&
  code=AUTH_CODE_HERE&
  redirect_uri=REDIRECT_URI&
  client_id=CLIENT_ID&
  client_secret=CLIENT_SECRET

 

正常的話,授權服務器會返回令牌和超時時間。

{
  "access_token":"RsT5OjbzRn430zqMLgV3Ia",
  "expires_in":3600
}

 

3.2、單頁面應用程序

和WebServer應用過程一致,唯一區別在於最后獲取令牌時,不提供client secret。

3.3、移動應用

創建一個登陸的鏈接,鏈接到授權服務器的原生應用或者授權Web頁面。

3.3.1 、原生應用

重定向地址方案需要在移動操作系統中注冊,綁定到新建的移動應用。

fbauth2://authorize?response_type=code&client_id=CLIENT_ID
  &redirect_uri=REDIRECT_URI&scope=email&state=1234zyx

假如授權服務器支持PKCE擴展,還需要提供以下兩個參數。

code_chanllenge

code_chanllenge_method

 

3.3.2、授權Web頁面

使用移動操作系統的標准瀏覽器。

 

獲取令牌時,如果用到了PKCE擴展,則必須提供code_verifier,即code_chanllenge的未哈希前的原文。

 

4、Password授權方式

直接通過用戶名和密碼獲取令牌。一般用於由授權方創建的應用。

POST https://api.oauth2server.com/token
  grant_type=password&
  username=USERNAME&
  password=PASSWORD&
  client_id=CLIENT_ID

 

5、Application access授權方式

應用使用自身的注冊信息登錄。

POST https://api.oauth2server.com/token
    grant_type=client_credentials&
    client_id=CLIENT_ID&
    client_secret=CLIENT_SECRET

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM