如何訪問被Keycloak保護的後端API

2022-07-05 09:18:10 字數 1961 閱讀 2263

後端專案整合keycloak之後我們是無法直接訪問後端的介面或者頁面的。此時必須先獲取到token然後攜帶著token去訪問介面。

本篇我們講述兩種獲取token然後請求的方式

使用http請求獲取token

使用postman的認證工具

後端整合keycloak時,我們一般會把訪問型別設定為confidential或者bearer-only型別的;前端專案一般是需要設定為public型別。

在後端正確地整合了keycloak,並把訪問型別設定為bearer-only之後,我們就可以通過下面的url獲取token:

post http://:8080/auth/realms//protocol/openid-connect/token
其中需要輸入你當前keycloak伺服器的url位址,realm需要設定成你後端專案所在的realm名。

配置好url之後我們需要填寫表單引數。這裡需要說明下,我此處只使用了password credentials方式獲取token,也就是使用使用者名稱密碼去獲取token的方式。此方式需要四個引數:

引數名引數值

grant_type

password

username

password

client_id

你keycloak域中訪問型別為public的client_id

這裡grant_type的值是固定的,寫password就可以。使用者名稱密碼是你當前realm中使用者的賬戶和密碼。這裡最重要的是client_id。大部分剛接觸keycloak的開發人員會以為這裡填寫我訪問的client就可以了。其實這是不對的。

bearer-only訪問型別的後端是沒有登入介面的,因此我們需要乙個public的客戶端來獲取token。

這裡順帶提一句,如果你的後端是非前後端分離的專案,那你應該把客戶端設定成public型別。

假定你現在有兩個客戶端,乙個叫fronted,乙個叫backend。那麼獲取token時,你應該使用fronted這個客戶端獲取傳送token請求。下面是乙個樣例:

這裡其實你需要關注的是access_tokentoken_type。當你成功獲取到token之後,你需要的是拼接token成如下形式。

bearer
然後將這個token放入到你請求後端介面http請求的headers的authorization請求頭裡面。

然後你就可以成功的訪問到你後端的api了。

keycloak的認證是基於oauth 2.0協議的,這也就意味著獲取keycloak的token的過程是乙個固定的流程。那麼我們如何使用postman訪問api呢。

首先我們先選擇authorization選項卡,然後在type中選擇oauth 2.0。

然後我們點選橙色的按鈕get new access token

在這個介面上,我們先選擇grant type為password credentials,再依次填入access token url,username,password,client id。然後就可以點選獲取token的按鈕了。

如果獲取成功的話,應該顯示獲取到的token。然後向下滾動點選use token,就可以訪問你需要的api了。

Keycloak配置外網訪問

轉 keycloak預設只允許本機執行,即localhost訪問。配置外網訪問有兩種方式 1.命令列加引數 b,例如standalone.bat b xx.xx.xx.xx 2.修改配置檔案standalone.xml 若為集群模式則修改對應的配置檔案 檔案位於keycloak 4.2.1.fina...

如何訪問乙個類的保護變數

或許很多人看了我這個標題,很想打我 類的變數都私有了。你訪問個p啊。不過事實上地球還真有類似的需求。記得2004年的時候,那會做個小的遊戲引擎,大部分的資料都是私有或者保護的,這些在應付遊戲本身的時候已經完全足夠了。但是後來做編輯器的時候,發現絕大部分私有或者保護的成員都是需要被外部訪問到的。但是實...

如何讓Excel輸入資料後自動保護,不能被修改

1 首先我們開啟乙個空白的工作表 2 選定要保護的工作表,ctrl a全選所有單元格 3 ctrl 1開啟單元格格式對話方塊 4 保護 去掉 鎖定 前面的對鉤 5 審閱選項卡 保護工作表 6 在密碼框中兩個輸入密碼123456 確定 7 alt f11開啟vbe視窗,在左上的工程視窗雙擊要保護的工作...