Spring Cloud Security OAuth2 實現分佈式認證授服務測試

一、項目目錄

二、測試模式

1、授權碼模式

首先我們需要先獲得授權碼,然後通過授權碼獲得令牌。就跟我們之前說的美團點評招聘微信登陸是一樣的。

(1)資源擁有者打開客戶端,客戶端要求資源擁有者給予授權,它將瀏覽器被重定向到授權服務器,重定向時會 附加客戶端的身份信息。如:

http://localhost:53020/uaa/oauth/authorize?client_id=c1&response_type=code&scope=all&redirect_uri=http://www.baidu.com

client_id:客戶端准入標識。

response_type:授權碼模式固定爲code。

scope:客戶端權限。

redirect_uri:跳轉uri,當授權碼申請成功後會跳轉到此地址,並在後邊帶上code參數(授權碼)

我們輸入後就會出現一個登陸頁面(這個url就像生成的二維碼,只不過我們掃碼之後,登陸的操作就不需要我們做了):

通過我們配置的UserDetailsService從數據庫中查到的,可以參考這個,這個不再贅述:

https://blog.csdn.net/weixin_44588495/article/details/105918081

登陸後(這個像點擊授權登陸一樣):

點擊完授權之後(這個code就是我們拿到的授權碼,在美團那個場景相當於調用了,美團的接口,將授權碼發送給美團):

注意:baidu.com/?code=84c8d5

(2)客戶端拿着授權碼向授權服務器索要訪問access_token(申請令牌

localhost:53020/uaa/oauth/token?client_id=c1&client_secret=secret&grant_type=authorization_code&code=84c8d5&redirect_uri=http://www.baidu.com
參數列表如下
client_id:客戶端准入標識。
client_secret:客戶端祕鑰。
grant_type:授權類型,填寫authorization_code,表示授權碼模式
code:授權碼,就是剛剛獲取的授權碼,注意:授權碼只使用一次就無效了,需要重新申請。
redirect_uri:申請授權碼時的跳轉url,一定和申請授權碼時用的redirect_uri一致。
 

上面是令牌,下面是刷新令牌。授權碼模式,我們就測試完了。

這種模式是四種模式中最安全的一種模式。一般用於clientWeb服務器端應用或第三方的原生App調用資源服務
的時候。因爲在這種模式中access_token不會經過瀏覽器或移動端的App,而是直接從服務端去交換,這樣就最大
限度的減小了令牌泄漏的風險

2、簡化模式

(1)資源擁有者打開客戶端,客戶端要求資源擁有者給予授權,它將瀏覽器被重定向到授權服務器,重定向時會 附加客戶端的身份信息。如:

localhost:53020/uaa/oauth/authorize?client_id=c1&response_type=token&scope=all&redirect_uri=http://www.baidu.com

參數描述同授權碼模式 ,注意response_type=token,說明是簡化模式.。

2)瀏覽器出現向授權服務器授權頁面,之後將用戶同意授權。

3)授權服務器將授權碼將令牌(access_token)以Hash的形式存放在重定向urifargment中發送給瀏覽器。
 
一般來說,簡化模式用於沒有服務器端的第三方單頁面應用,因爲沒有服務器端就無法接收授權碼。
直接拿到了token。

3、密碼模式

 (1)資源擁有者將用戶名、密碼發送給客戶端
(2)客戶端拿着資源擁有者的用戶名、密碼向授權服務器請求令牌(access_token),請求如下: 
 
localhost:53020/uaa/oauth/token?client_id=c1&client_secret=secret&grant_type=password&username=zhangsan&password=123
參數列表如下:
client_id:客戶端准入標識。
client_secret:客戶端祕鑰。
grant_type:授權類型,填寫password表示密碼模式
username:資源擁有者用戶名。
password:資源擁有者密碼
 
(3)授權服務器將令牌(access_token)發送給client
這種模式十分簡單,但是卻意味着直接將用戶敏感信息泄漏給了client,因此這就說明這種模式只能用於client是我
們自己開發的情況下。因此密碼模式一般用於我們自己開發的,第一方原生App或第一方單頁面應用。
 

4、客戶端模式

1)客戶端向授權服務器發送自己的身份信息,並請求令牌(access_token
2)確認客戶端身份無誤後,將令牌(access_token)發送給client,請求如下:
localhost:53020/uaa/oauth/token?client_id=c1&client_secret=secret&grant_type=client_credentials
client_id:客戶端准入標識。
client_secret:客戶端祕鑰。
grant_type:授權類型,填寫client_credentials表示客戶端模式
這種模式是最方便但最不安全的模式。因此這就要求我們對client完全的信任,而client本身也是安全的。因
此這種模式一般用來提供給我們完全信任的服務器端服務。比如,合作方系統對接,拉取一組用戶信息。
 
源碼[email protected]:Zesystem/oauth2.0_init.git
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章