[英]Microservice authentication with Keycloak
我正在嘗試在另一個微服務中驗證一個微服務請求,但我找不到任何示例來說明如何在 keycloak 中配置客戶端以及如何配置 spring 安全性。 這是我要歸檔的架構:
我已經設法讓用戶授權工作並保護微服務 A,現在我正在嘗試授權來自微服務 B 的請求,但我不知道該怎么做,是否應該在 keycloak 中為微服務 B 創建一個專用用戶,或realm中的客戶,或其他一些技術帳戶? 它是由一些 api 密鑰完成的,還是微服務 B 應該以與用戶類似的方式請求訪問令牌?
我的想法是在 Keycloak 中為微服務 B 創建一個客戶端,從 Keycloak 請求訪問令牌並將其附加到發送到微服務 A 的每個請求中。
這是正確的方法嗎?
是否有一些圖書館解決這種情況?
我找不到與 spring 進行此類通信的任何示例,您是否知道帶有此類示例的任何存儲庫?
據我了解,您對 MS-A 的前端訪問是通過不同的用戶帳戶(登錄名)完成的。 但是對於訪問 MS-A 的 MS-B 來說,當 MS-B 始終使用相同的帳戶(MS-B 服務帳戶)時可以嗎?
在這種情況下,我將為此后端身份驗證創建第二個客戶端,我們將其稱為backend-client
並使用以下選項:
OIDC,機密,啟用直接訪問授權和服務帳戶,禁用標准流
MS-B 現在可以通過對 Keycloak 的簡單請求獲得訪問令牌
curl --request POST \
--url https://keycloak/auth/realms/%realm_name%/protocol/openid-connect/token \
--header 'Accept: */*' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'client_id=backend-client&client_secret=%client_secret%&grant_type=client_credentials'
(不需要用戶+密碼,所以保持client_secret
真的安全)
訪問令牌現在需要用於從 MS-B 到 MS-A 的所有請求( Authentication: Bearer %Access-Token%
標頭)
我不知道有任何 spring 實現/適配器,但我很確定如果您搜索Direct Access Grants
,您會找到合適的解決方案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.