Oauth2的4種模式:
- 受權碼(Authorization)模式(獲取code、code換取access_token)
- 簡化(Impilict)模式(直接換取access_token,基本不用)
- 密碼(Resource Owner Password)模式(客戶端向用戶索取帳號密碼,而後客戶端向服務端索取受權,基本不用)
- 客戶端(Client)模式(客戶端以本身的名義要求"服務提供商"提供服務;場景:提供接口服務)
受權碼模式流程
-
註冊客戶端安全
- clientId = 1
- secret=secret
- 註冊用戶
-
請求受權碼ide
- 跳轉至受權登陸頁面
- 登陸後,回調到redirect_uri?code=xxxxx&scope=productservice%20agentservice
- POST http://localhost:8080/oauth2-server/token?client_id=client_id&client_secrets=client_secrets&grant_type=authorization_code&redirect_uri=redirect_uri&code=xxxx&scope=productservice%20agentservice 獲得accessToken
簡化模式流程
同受權碼模式
只是少了步驟5,6
第5步登陸後就返回accessToken
客戶端受權流程
客戶端和受權中心之間的對接,跟用戶無關
密碼模式
用戶將帳戶密碼告訴客戶端
客戶端用帳戶密碼得到受權
總結
- 經常使用的仍是受權碼模式。
- 相比受權碼模式,簡化模式雖然下降了安全性,但也下降了使用難度
- 客戶端模式通常用於 API調用服務
- 密碼模式由於直接泄露密碼,基本沒有使用的場景