當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
项目使用encode_Spring Cloud Security:Oauth2使用入门
生活随笔
收集整理的這篇文章主要介紹了
项目使用encode_Spring Cloud Security:Oauth2使用入门
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Spring Cloud Security 為構(gòu)建安全的SpringBoot應(yīng)用提供了一系列解決方案,結(jié)合Oauth2可以實(shí)現(xiàn)單點(diǎn)登錄、令牌中繼、令牌交換等功能,本文將對(duì)其結(jié)合Oauth2入門使用進(jìn)行詳細(xì)介紹。
SpringCloud實(shí)戰(zhàn)電商項(xiàng)目mall-swarm(5.1k+star)地址:https://github.com/macrozheng/mall-swarm
OAuth2 簡(jiǎn)介
OAuth 2.0是用于授權(quán)的行業(yè)標(biāo)準(zhǔn)協(xié)議。OAuth 2.0為簡(jiǎn)化客戶端開發(fā)提供了特定的授權(quán)流,包括Web應(yīng)用、桌面應(yīng)用、移動(dòng)端應(yīng)用等。
OAuth2 相關(guān)名詞解釋
- Resource owner(資源擁有者):擁有該資源的最終用戶,他有訪問資源的賬號(hào)密碼;
- Resource server(資源服務(wù)器):擁有受保護(hù)資源的服務(wù)器,如果請(qǐng)求包含正確的訪問令牌,可以訪問資源;
- Client(客戶端):訪問資源的客戶端,會(huì)使用訪問令牌去獲取資源服務(wù)器的資源,可以是瀏覽器、移動(dòng)設(shè)備或者服務(wù)器;
- Authorization server(認(rèn)證服務(wù)器):用于認(rèn)證用戶的服務(wù)器,如果客戶端認(rèn)證通過,發(fā)放訪問資源服務(wù)器的令牌。
四種授權(quán)模式
- Authorization Code(授權(quán)碼模式):正宗的OAuth2的授權(quán)模式,客戶端先將用戶導(dǎo)向認(rèn)證服務(wù)器,登錄后獲取授權(quán)碼,然后進(jìn)行授權(quán),最后根據(jù)授權(quán)碼獲取訪問令牌;
- Implicit(簡(jiǎn)化模式):和授權(quán)碼模式相比,取消了獲取授權(quán)碼的過程,直接獲取訪問令牌;
- Resource Owner Password Credentials(密碼模式):客戶端直接向用戶獲取用戶名和密碼,之后向認(rèn)證服務(wù)器獲取訪問令牌;
- Client Credentials(客戶端模式):客戶端直接通過客戶端認(rèn)證(比如client_id和client_secret)從認(rèn)證服務(wù)器獲取訪問令牌。
兩種常用的授權(quán)模式
授權(quán)碼模式
- (A)客戶端將用戶導(dǎo)向認(rèn)證服務(wù)器;
- (B)用戶在認(rèn)證服務(wù)器進(jìn)行登錄并授權(quán);
- (C)認(rèn)證服務(wù)器返回授權(quán)碼給客戶端;
- (D)客戶端通過授權(quán)碼和跳轉(zhuǎn)地址向認(rèn)證服務(wù)器獲取訪問令牌;
- (E)認(rèn)證服務(wù)器發(fā)放訪問令牌(有需要帶上刷新令牌)。
密碼模式
- (A)客戶端從用戶獲取用戶名和密碼;
- (B)客戶端通過用戶的用戶名和密碼訪問認(rèn)證服務(wù)器;
- (C)認(rèn)證服務(wù)器返回訪問令牌(有需要帶上刷新令牌)。
Oauth2的使用
創(chuàng)建oauth2-server模塊
這里我們創(chuàng)建一個(gè)oauth2-server模塊作為認(rèn)證服務(wù)器來使用。- 在pom.xml中添加相關(guān)依賴:
- 在application.yml中進(jìn)行配置:
- 添加UserService實(shí)現(xiàn)UserDetailsService接口,用于加載用戶信息:
- 添加認(rèn)證服務(wù)器配置,使用@EnableAuthorizationServer注解開啟:
- 添加資源服務(wù)器配置,使用@EnableResourceServer注解開啟:
- 添加SpringSecurity配置,允許認(rèn)證相關(guān)路徑的訪問及表單登錄:
- 添加需要登錄的接口用于測(cè)試:
授權(quán)碼模式使用
- 啟動(dòng)oauth2-server服務(wù);
- 在瀏覽器訪問該地址進(jìn)行登錄授權(quán):http://localhost:9401/oauth/authorize?response_type=code&client_id=admin&redirect_uri=http://www.baidu.com&scope=all&state=normal
- 輸入賬號(hào)密碼進(jìn)行登錄操作:
- 登錄后進(jìn)行授權(quán)操作:
- 之后會(huì)瀏覽器會(huì)帶著授權(quán)碼跳轉(zhuǎn)到我們指定的路徑:
- 使用授權(quán)碼請(qǐng)求該地址獲取訪問令牌:http://localhost:9401/oauth/token
- 使用Basic認(rèn)證通過client_id和client_secret構(gòu)造一個(gè)Authorization頭信息;
- 在body中添加以下參數(shù)信息,通過POST請(qǐng)求獲取訪問令牌;
- 在請(qǐng)求頭中添加訪問令牌,訪問需要登錄認(rèn)證的接口進(jìn)行測(cè)試,發(fā)現(xiàn)已經(jīng)可以成功訪問:http://localhost:9401/user/getCurrentUser
密碼模式使用
- 使用密碼請(qǐng)求該地址獲取訪問令牌:http://localhost:9401/oauth/token
- 使用Basic認(rèn)證通過client_id和client_secret構(gòu)造一個(gè)Authorization頭信息;
- 在body中添加以下參數(shù)信息,通過POST請(qǐng)求獲取訪問令牌;
使用到的模塊
springcloud-learning └── oauth2-server -- oauth2認(rèn)證測(cè)試服務(wù)項(xiàng)目源碼地址
https://github.com/macrozheng/springcloud-learning
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的项目使用encode_Spring Cloud Security:Oauth2使用入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吃下去的东西老是往上翻上来_这间日日火爆
- 下一篇: 威纶通触摸屏与仪表通讯_西门子S7-20