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組件,在實際工作中請按照實際情況引入相關依賴。
代碼結構如下:
代碼結構
application.yml:
配置
代碼
Oauth2serviceApplication沒什麼可改的。
OAuth2Controller:
這個Controller主要是與頁面配套,authorize方法是跳轉至登錄頁面;login方法是對用戶名密碼進行校驗。AccessTokenController:
這個Controller主要是提供Restful介面,返回AccessToken。
大家注意上面的Controller用的註解是@Controller,這裡用的是@RestController。
Restful介面
注意:在實際工作中,這個方法應該會遇到跨域問題(我們到沒這個問題,因為各個系統都用域名統一了),大家可以使用CROS協議來解決此事。後續有空了再寫一篇說說Spring的CROS實現吧。
實體類:請求類
響應類
HTML:登錄
login.html
跳轉至客戶端的URL:
jump.html
結果測試:
瀏覽器訪問授權服務:
紅框內的aabbcc就是客戶端ID。
輸入賬號、密碼登錄,校驗成功後會跳轉至實現配置好的客戶端URL,本例中是今日頭條。
紅框內就是返回的授權碼,一般來說,客戶端的這個頁面可以通過各種方式拿到這個code1,比如:
獲取URL里的參數
紅框內的code就是url的key。
獲取AccessToken
客戶端發送Post請求,傳客戶端ID、口令、剛得到的授權碼,獲取AccessToken,本例使用Postman。
※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