簡體   English   中英

使用 Keycloak 進行微服務身份驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM