當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringSecurity OAuth2四种模式说明
生活随笔
收集整理的這篇文章主要介紹了
SpringSecurity OAuth2四种模式说明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
OAuth2.0中四種授權方式
授權碼模式(authorization code)
流程
說明:【A服務客戶端】需要用到【B服務資源服務】中的資源
- 第一步:【A服務客戶端】將用戶自動導航到【B服務認證服務】,這一步用戶需要提供一個回調地址,以備 【B服務認證服務】返回授權碼使用。
- 第二步:用戶點擊授權按鈕表示讓【A服務客戶端】使用【B服務資源服務】,這一步需要用戶登錄B服務,也 就是說用戶要事先具有B服務的使用權限。
- 第三步:【B服務認證服務】生成授權碼,授權碼將通過第一步提供的回調地址,返回給【A服務客戶端】。 注意這個授權碼并非通行【B服務資源服務】的通行憑證。
- 第四步:【A服務認證服務】攜帶上一步得到的授權碼向【B服務認證服務】發送請求,獲取通行憑證token。
- 第五步:【B服務認證服務】給【A服務認證服務】返回令牌token和更新令牌refresh token。
使用場景
授權碼模式是OAuth2中最安全最完善的一種模式,應用場景最廣泛,可以實現服務之間的調用,常見的微 信,QQ等第三方登錄也可采用這種方式實現。
簡化模式(implicit)
流程
說明:簡化模式中沒有【A服務認證服務】這一部分,全部有【A服務客戶端】與B服務交互,整個過程不再有 授權碼,token直接暴露在瀏覽器。
- 第一步:【A服務客戶端】將用戶自動導航到【B服務認證服務】,這一步用戶需要提供一個回調地址,以備 【B服務認證服務】返回token使用,還會攜帶一個【A服務客戶端】的狀態標識state。
- 第二步:用戶點擊授權按鈕表示讓【A服務客戶端】使用【B服務資源服務】,這一步需要用戶登錄B服務,也 就是說用戶要事先具有B服務的使用權限。
- 第三步:【B服務認證服務】生成通行令牌token,token將通過第一步提供的回調地址,返回給【A服務客戶 端】。
使用場景
適用于A服務沒有服務器的情況。比如:純手機小程序,JavaScript語言實現的網頁插件等
密碼模式(resource owner password credentials)
流程
- 第一步:直接告訴【A服務客戶端】自己的【B服務認證服務】的用戶名和密碼
- 第二步:【A服務客戶端】攜帶【B服務認證服務】的用戶名和密碼向【B服務認證服務】發起請求獲取 token。
- 第三步:【B服務認證服務】給【A服務客戶端】頒發token。
使用場景
此種模式雖然簡單,但是用戶將B服務的用戶名和密碼暴露給了A服務,需要兩個服務信任度非常高才能使 用
客戶端模式(client credentials)
流程
說明:這種模式其實已經不太屬于OAuth2的范疇了。A服務完全脫離用戶,以自己的身份去向B服務索取 token。換言之,用戶無需具備B服務的使用權也可以。完全是A服務與B服務內部的交互,與用戶無關了。
- 第一步:A服務向B服務索取token。
- 第二步:B服務返回token給A服務。
使用場景
A服務本身需要B服務資源,與用戶無關。
總結
以上是生活随笔為你收集整理的SpringSecurity OAuth2四种模式说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringSecurity OAuth
- 下一篇: SpringSecurity OAuth