當前位置:
首頁 > 知識 > Spring Boot自己實現簡版OAuth2.0

Spring Boot自己實現簡版OAuth2.0

Spring Boot自己實現簡版OAuth2.0

OAuth2

先介紹一下背景,當時跟幾個合作方一起給客戶做一個系統,A系統是做數據分析的,採集一些數據,然後分析,用很多圖表展示出來。客戶要求其他合作方也能在自己的WEB內展示A系統的頁面,我們就提出A可以根據OAuth2.0協議搞一個認證服務。

我自己先用Servlet實現了一個認證服務,現在改成Spring Boot實現。

另外Spring Boot結合Spring Security以及OAuth2.0的插件也能很快的實現,抽空用這個搞一次。

OAuth2協議改版授權流程

先說明一下,畢竟是我們系統內部用,很多配置都事先協調好了,不像微博那種面向互聯網用戶的,所以我們在OAuth2協議上做了很多簡化(比如我們就沒有實現更新AccessToken的功能,返回AccessToken的時候也沒有帶上有效期),大家在實際工作中還是按照自身的情況做。

1、 客戶端Get請求http://127.0.0.1:6742/oauth2/authorize/客戶端ID 。

2、 授權服務端跳轉至登錄頁面。

3、 用戶輸入賬號密碼進行登錄。

4、 授權服務端校驗登錄信息,生成授權碼並返回至客戶端。

5、 客戶端Post請求http://127.0.0.1:6742/accesstoken 傳入客戶端ID、口令、授權碼

6、 授權服務端校驗客戶端ID、口令、授權碼,返回AccessToken。

注意:協議必須是HTTPS。


工程構建與結構

參考以前的文章構建工程,依賴選Web、Thymeleaf(這個是用來做頁面的,大家按照實際情況選用即可)。

本例只是作為Demo,所以沒有引入Eureka等Spring Cloud組件,在實際工作中請按照實際情況引入相關依賴。

代碼結構如下:

Spring Boot自己實現簡版OAuth2.0

代碼結構

application.yml:

Spring Boot自己實現簡版OAuth2.0

配置


代碼

Oauth2serviceApplication沒什麼可改的。

OAuth2Controller:

這個Controller主要是與頁面配套,authorize方法是跳轉至登錄頁面;login方法是對用戶名密碼進行校驗。

Spring Boot自己實現簡版OAuth2.0

AccessTokenController:

這個Controller主要是提供Restful介面,返回AccessToken。

大家注意上面的Controller用的註解是@Controller,這裡用的是@RestController。

Spring Boot自己實現簡版OAuth2.0

Restful介面

注意:在實際工作中,這個方法應該會遇到跨域問題(我們到沒這個問題,因為各個系統都用域名統一了),大家可以使用CROS協議來解決此事。後續有空了再寫一篇說說Spring的CROS實現吧。

實體類:

Spring Boot自己實現簡版OAuth2.0

Spring Boot自己實現簡版OAuth2.0

請求類

Spring Boot自己實現簡版OAuth2.0

響應類

HTML:登錄Spring Boot自己實現簡版OAuth2.0

login.html

跳轉至客戶端的URL:Spring Boot自己實現簡版OAuth2.0

jump.html


結果測試:

瀏覽器訪問授權服務:

Spring Boot自己實現簡版OAuth2.0


紅框內的aabbcc就是客戶端ID。

輸入賬號、密碼登錄,校驗成功後會跳轉至實現配置好的客戶端URL,本例中是今日頭條。

Spring Boot自己實現簡版OAuth2.0

紅框內就是返回的授權碼,一般來說,客戶端的這個頁面可以通過各種方式拿到這個code1,比如:Spring Boot自己實現簡版OAuth2.0

獲取URL里的參數

紅框內的code就是url的key。


獲取AccessToken

客戶端發送Post請求,傳客戶端ID、口令、剛得到的授權碼,獲取AccessToken,本例使用Postman。

Spring Boot自己實現簡版OAuth2.0

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java個人學習心得 的精彩文章:

Spring Cloud服務追蹤與日誌聚合
Spring Boot API可視化Swagger
Spring Cloud分散式配置中心Config
Spring Cloud斷路器Hystrix
Spring Cloud服務間調用Feign

TAG:Java個人學習心得 |

您可能感興趣

精簡版Windows10曝光,代號:Santorini!
簡版科幻入坑指南/Instruction of Falling for SF-Abridged Edition
精簡版系統——Android Pie GO Edition
簡版 Supreme 聯名?Nike Air Max 98 蛇紋配色一覽
簡版Supreme聯名?Nike Air Max 98蛇紋配色曝光
僅需6GB 超級精簡版Windows 10 Lean偷跑
簡版花卉聯名!Converse One Star 「Carnival Pack」別再手慢了!
adidas Originals 三葉草 YUNG-1 簡版YEEZY700老爹鞋「太陽橙深藍黃」B37613
Microsoft Office 2016精簡版四合一 中文安裝免激活版
蘋果計劃在9月份推出AirPower mat,運行一個「精簡版」的iOS版本
Facebook將為iPhone推出精簡版應用
2018款iPhone X Lite,精簡版都秒殺安卓競爭對手
誰要一個「精簡版」 Windows 10?
耐克Nike X Novo Free Rn 2018赤足簡版宇航員二代輕量跑鞋
微軟推出精簡版Windows 10 Lean系統意欲何為?
將不再卡頓?Android 9.0 GO精簡版再瘦500MB
彭博:蘋果 9 月發售 AirPower,運行精簡版 iOS 系統
Intime碧SORA Light入耳式耳機精簡版測評
Windows10 RS5新版17655增強操作中心 Windows10官方簡版系統:16G硬碟就能運行
Windows 10精簡版曝光 比專業版小了約2GB