偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

單點(diǎn)登錄,不要老盯著cas-server了,你還可以選擇keycloak

開發(fā) 前端
這里的cas不是Java并發(fā)包中的CAS,做過單點(diǎn)登錄(SSO)的同學(xué)應(yīng)該對(duì)它不會(huì)陌生。這個(gè)玩意太古老了,而且生態(tài)非常龐大,以至于我現(xiàn)在想起它都心有余悸。

這里的cas不是Java并發(fā)包中的CAS,做過單點(diǎn)登錄(SSO)的同學(xué)應(yīng)該對(duì)它不會(huì)陌生。這個(gè)玩意太古老了,而且生態(tài)非常龐大,以至于我現(xiàn)在想起它都心有余悸。很長(zhǎng)一段時(shí)間,做單點(diǎn)登錄,或多或少都要參考CAS,這讓人很頭痛。

[[346878]]

當(dāng)然,我們有另外一個(gè)選擇:keycloak,它是jboss出品的。凡是jboss出品的東西,都出奇的重,keycloak也不例外,涵蓋了權(quán)限認(rèn)證的各種場(chǎng)景的功能。這也是可以理解的,畢竟認(rèn)證是個(gè)又臟又累的活,封裝好它很不容易。

這就造成了,雖然keycloak提供了一個(gè)簡(jiǎn)單易用的控制后臺(tái),如果不了解一些驗(yàn)證的概念,用來來也并不順手。

今天,xjjdog就來一個(gè)quickstart,品嘗一下這個(gè)權(quán)限服務(wù)的味道。

首先,下載它的安裝包。

  1. wget -c https://downloads.jboss.org/keycloak/11.0.2/keycloak-11.0.2.zip 

執(zhí)行bin目錄下的./standalone.sh文件,即可啟動(dòng)keycloak server。可以看到它監(jiān)聽在9990端口。

此時(shí),訪問這個(gè)鏈接得不到任何信息,因?yàn)槔锩孢€沒有一個(gè)初始用戶。就像盤古開天辟地一樣,我們需要一個(gè)盤古。

使用add-user.sh命令,初始化一個(gè)用戶。如果你初始化的是admin,就需要先把它給啟用了。初始化以后,就可以在訪問后臺(tái)進(jìn)行設(shè)置了。

Keycloak Server部署在8080端口,可以通過以下鏈接進(jìn)行訪問。

http://127.0.0.1:8080/auth/

1. 創(chuàng)建Realms

要想使用Keycloak,需要先生成一個(gè)Realm。Realm是領(lǐng)域的意思,在它其中,所有的用戶和權(quán)限都是獨(dú)立的。如果這些公司愿意的話,我可以把京東和淘寶的用戶全部放在一個(gè)server上。

舉以上例子是想說明,Realm這個(gè)東西,就是一個(gè)隔離措施。鼠標(biāo)懸浮在左上角,點(diǎn)擊add realm即可進(jìn)入創(chuàng)建頁面。

創(chuàng)建realm很簡(jiǎn)單,只需要提供一個(gè)名字就可以了。

但不要高興的太早。作為一個(gè)全局配置,它的選項(xiàng)肯定是非常多的。不過這都屬于自定義性的增強(qiáng)使用,我們這里不討論它。

2. 創(chuàng)建權(quán)限

接下來,將創(chuàng)建兩個(gè)權(quán)限組。權(quán)限也比較好理解,就是一個(gè)字符串而已。我們創(chuàng)建ROLE_ADMIN和ROLE_USER兩個(gè)權(quán)限。

3. 創(chuàng)建用戶

該到了創(chuàng)建用戶的時(shí)間了。在Users選項(xiàng)卡中點(diǎn)擊新建就可進(jìn)入創(chuàng)建目錄。我們這里創(chuàng)建一個(gè)叫做xjjdog0的用戶。

用戶的選項(xiàng)也是非常多的。我們主要關(guān)注兩部分。一個(gè)是Credentials,可以更新設(shè)置用戶的密碼;一個(gè)是Role Mappings,可以設(shè)置用戶的權(quán)限。我們這里都操作一下,把xjjdog0的密碼設(shè)置為123456。

注意,這里有一個(gè)小小的細(xì)節(jié)。如果我們更新了用戶的密碼。在用戶設(shè)置的主頁面,將會(huì)出現(xiàn)update Password字樣。它的意思是,需要用戶進(jìn)行一次自己的密碼更新,這個(gè)用戶才能真正使用。如果你不需要強(qiáng)制用戶設(shè)置一遍密碼,就可以把它刪掉。

我們當(dāng)然是把它刪掉。

4. 創(chuàng)建client

要想在xjjdog這個(gè)領(lǐng)域里進(jìn)行權(quán)限認(rèn)證,還需要拿到一個(gè)clientid,用來標(biāo)示自己的身份。

我們這里創(chuàng)建了一個(gè)叫做xjjdemo的client,稍后會(huì)在token接口中帶它進(jìn)去。

5. 測(cè)試token接口獲取接口的地址為:

  1. ip:port/auth/realms/icp/protocol/openid-connect/token 

在這里,根據(jù)我們上面設(shè)置的地址信息,可以構(gòu)造出token的請(qǐng)求地址為:

  1. http://localhost:8080/auth/realms/xjjdog/protocol/openid-connect/token 

使用curl來獲取token。

  1. curl -XPOST -d 'client_id=xjjdemo&grant_type=password&scope=openid&username=xjjdog0&password=123456'  http://localhost:8080/auth/realms/xjjdog/protocol/openid-connect/token 

提供了client_id,grant_type,username,password等參數(shù),發(fā)送post請(qǐng)求后會(huì)返回一個(gè)json。

  1.     "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICItMXF4RW9NTU1ON29NM2NrZUhPaEowaFVZVGxQNThfMDNwMDYzV1hIVzQwIn0.eyJleHAiOjE2MDI2NTQ1NzMsImlhdCI6MTYwMjY1NDI3MywianRpIjoiMGQ1ZmZhNzgtZTQ5OS00MmFmLTgyMTUtNjgwODNiNjQ4ODRlIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL3hqamRvZyIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiJjYWQ3NjNiMS01OTg3LTQzYTItOGQ4MC0yZDVlODY1ZGI3MTYiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJ4ampkZW1vIiwic2Vzc2lvbl9zdGF0ZSI6ImQxMWQzOWM2LTBhMzItNDNlYi1iYTIyLTg1MzdlZWE4MDcwNiIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiLyoiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIlJPTEVfVVNFUiIsIm9mZmxpbmVfYWNjZXNzIiwiUk9MRV9BRE1JTiIsInVtYV9hdXRob3JpemF0aW9uIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoieGpqZG9nMCJ9.DVX3VtSjq-hSsjEWqudKIcZhSpIuuDyalRx0epD93HMX8ap5z_7LpeITdb3aRv3AFIBQe8d80SsDZwUIj9NSobyMo8US4ZF4cLyHEYsp881-vJInnrQ-vbnxwShsx1r1S8NO7dV1CP-aD8b611JBtzxV-P6GPbiZH283BFMnKFHQ68aox0_VYEx3dq3PA53LyM8-_rCElrpyTHk1dUdC7OluPgLx390m9H0TV_2aR9ufXGA4e-xW5fmOFvAHGlg_t3BoDVAduQkoy_wYHA_NbP3uRIOcC0pgOonAsspT2lXA_xkPU8oIpPvBQzcV4eWivm1WV_y6K4kOvn0ZJtkFmA", 
  2.     "expires_in": 300, 
  3.     "refresh_expires_in": 1800, 
  4.     "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJjNGMwMzMzOC04MDU5LTRlNDItODYxMC1iYzkzMjNjZDY5NmIifQ.eyJleHAiOjE2MDI2NTYwNzMsImlhdCI6MTYwMjY1NDI3MywianRpIjoiNGE5ZjgxMGItMzc1ZC00OGRmLTg3YjYtN2UwODY4MmFhNDYxIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL3hqamRvZyIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hdXRoL3JlYWxtcy94ampkb2ciLCJzdWIiOiJjYWQ3NjNiMS01OTg3LTQzYTItOGQ4MC0yZDVlODY1ZGI3MTYiLCJ0eXAiOiJSZWZyZXNoIiwiYXpwIjoieGpqZGVtbyIsInNlc3Npb25fc3RhdGUiOiJkMTFkMzljNi0wYTMyLTQzZWItYmEyMi04NTM3ZWVhODA3MDYiLCJzY29wZSI6Im9wZW5pZCBlbWFpbCBwcm9maWxlIn0.mJYtSMQLgEDlzpX7_WC5pAF8s2DENZB1IBv20R2kZ8s", 
  5.     "token_type": "bearer", 
  6.     "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICItMXF4RW9NTU1ON29NM2NrZUhPaEowaFVZVGxQNThfMDNwMDYzV1hIVzQwIn0.eyJleHAiOjE2MDI2NTQ1NzMsImlhdCI6MTYwMjY1NDI3MywiYXV0aF90aW1lIjowLCJqdGkiOiJmN2VjYjJlNi1mYmRlLTQ2ZjItOWE1Mi00YTEyMjlkYzQ5YjIiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwODAvYXV0aC9yZWFsbXMveGpqZG9nIiwiYXVkIjoieGpqZGVtbyIsInN1YiI6ImNhZDc2M2IxLTU5ODctNDNhMi04ZDgwLTJkNWU4NjVkYjcxNiIsInR5cCI6IklEIiwiYXpwIjoieGpqZGVtbyIsInNlc3Npb25fc3RhdGUiOiJkMTFkMzljNi0wYTMyLTQzZWItYmEyMi04NTM3ZWVhODA3MDYiLCJhdF9oYXNoIjoiM1h0eEhqTUQ5Q3FNdEwxcWFxTlFfZyIsImFjciI6IjEiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInByZWZlcnJlZF91c2VybmFtZSI6InhqamRvZzAifQ.EvUbCmrylfwFL0rhyX36nnxFNRTvtYZAkPYtLv6r8CCbolRHwNJDJflu44BpLQBJGD4UNFkvfsz1BmU-mAw5soxS7eaupOm8LGkUm_qmgj-qtH0eGRi4FlUq4Tw3gx4lGoyR1zNlt1dkcAhjNtyXkhZWjcjDownLgFajNrUCOUiFw1XZwBDPlyy5AQ8d1Kkc5RIF6zhy4bkXKp_fakTNWJPr2-C1xYcEssGOv81FVUajszmItnWP4SnJvzER_njpmnjg_b1lPMng-zMx-R7zgQrx06JStO0IKUd8hXSSmudpw652whR31cCWbTBhfNB2RH_Rnfrau2047WZ36I8zmg", 
  7.     "not-before-policy": 0, 
  8.     "session_state": "d11d39c6-0a32-43eb-ba22-8537eea80706", 
  9.     "scope": "openid email profile" 

access_token和id_token比較眼熟,它用.分割了三部分,看起來像是JWT格式。

使用工具解碼一看,果然是,于是瞬間的起來。

可以看到用戶信息的playload區(qū)域內(nèi)容還是非常多的。這種token放在網(wǎng)絡(luò)上傳輸,肯定是非常浪費(fèi)的。不過都21世紀(jì)了,這點(diǎn)浪費(fèi)也是可以接受的。

請(qǐng)求下面的地址,可以驗(yàn)證userinfo。

  1. curl -XPOST -d  'access_token={上面的token}' http://localhost:8080/auth/realms/xjjdog/protocol/openid-connect/userinfo 

你將獲得以下字樣。

  1.     "sub": "cad763b1-5987-43a2-8d80-2d5e865db716", 
  2.     "email_verified": false, 
  3.     "preferred_username": "xjjdog0" 

End可以看到,keycloak用的是無狀態(tài)的方式進(jìn)行的token管理,是基于比較先進(jìn)的 OAuth 2.0 和 JSON Web Token(JWT) 規(guī)范來設(shè)計(jì)的。這對(duì)于互聯(lián)網(wǎng)應(yīng)用來說,就天然擁有了橫向擴(kuò)展的能力。

keycloak集成到SpringBoot非常簡(jiǎn)單,官方就有這樣的demo。keycloak的開發(fā)也非?;钴S,master分支就在剛剛還提交了代碼??傊档靡辉?

 

責(zé)任編輯:趙寧寧 來源: 小姐姐味道
相關(guān)推薦

2021-07-02 10:45:53

SpringBootCAS登錄

2021-07-13 14:05:37

單點(diǎn)登錄頁面

2021-07-06 11:42:05

數(shù)據(jù)庫SpringSecurCAS

2021-06-29 12:27:19

Spring BootCAS 登錄

2021-03-02 08:39:42

通信監(jiān)控網(wǎng)絡(luò)

2012-12-03 13:54:15

IBMdW

2020-09-08 13:13:29

監(jiān)控網(wǎng)絡(luò)數(shù)據(jù)

2024-05-17 09:37:26

format屬性Spring

2019-01-29 10:00:59

GitHub開源搜索

2018-05-11 10:15:09

區(qū)塊鏈數(shù)字貨幣比特幣

2020-08-24 07:19:13

主鍵自增數(shù)據(jù)庫

2024-08-12 08:12:38

2021-08-23 13:19:24

算法大數(shù)據(jù)技術(shù)

2015-08-12 16:32:34

華為/物聯(lián)網(wǎng)

2023-12-11 13:57:00

RFM模型激勵(lì)機(jī)制

2018-07-13 10:56:06

互聯(lián)網(wǎng)城市北上廣

2022-05-12 07:37:51

單點(diǎn)登錄微服務(wù)開源

2019-09-17 16:04:17

戴爾

2016-12-02 20:43:28

Android

2022-08-15 08:34:08

OauthCAS登錄
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)