3 回答

TA貢獻1886條經(jīng)驗 獲得超2個贊
萬一有人遇到這樣的問題:
由于 META-INF/services 文件夾,UserStorage SPI 未顯示。它在文檔中提供,但不清楚
在 src/main/resources 中,創(chuàng)建文件夾結構 META-INF/services
在 META-INF/services 目錄中創(chuàng)建一個名為 org.keycloak.storage.UserStorageProviderFactory 的文件(整個就是文件名)。它的內(nèi)容是您的 SPI 的完全限定類名:com.test.UserSpi

TA貢獻1818條經(jīng)驗 獲得超8個贊
好的,您已闡明您需要一個用戶存儲提供程序 API。偉大的
現(xiàn)在關于你的第二個“問題/挑戰(zhàn)”:
從外部數(shù)據(jù)源中檢索一些屬性,將其映射到 keycloak 的 id 和訪問令牌。需要檢索用戶唯一 ID 并將其添加為 jwt 中的主題 ID。這是 id,當此令牌傳遞給其他服務時,其余服務可用于檢索 id。
為此,你能做的最好的事情是:
添加這些用戶的唯一數(shù)據(jù)作為用戶屬性(在管理控制臺上查看)
在 Keycloak 上創(chuàng)建一個“客戶端范圍”,使用“用戶屬性”的映射器將您想要(從您的用戶)添加的那些屬性映射到您的 Id-token 和 access-token。您還需要將您的客戶與您剛剛創(chuàng)建的“客戶范圍”聯(lián)系起來。

TA貢獻1895條經(jīng)驗 獲得超3個贊
我不確定你需要什么。讓我們從區(qū)分 Authentication SPI(聯(lián)合身份檢查)和 User Provider SPI(聯(lián)合用戶)開始。第一個(文檔的第 8 節(jié) - 更多地關注針對外部服務對用戶進行身份驗證 - 類似于 facebook 或 google)。聯(lián)合用戶存儲更像是您在具有遺留“角色結構”的遺留系統(tǒng)中擁有自己的用戶,并且您基本上想通過 keycloak 管理它們(通過導入它們,或者通過某些 API 查詢 - 這將是部分該文檔的 11)。因此,請確定您確實需要什么。
第二,你提到以下內(nèi)容:
> User is presented keycloak login screen. Onsubmission User is
> validated against external Datasource.
>
> Retrieve some attributes from external datasource, map it to
> keycloak's id and access token.
>
> Also put in a condition of user restriction of same user logging in
> multiple times at the same time.
>
> I was thinking, it could be solved by retrieving user session
> information that's available in the keycloak datasource. If i use
> external datasource, does keycloak still maintain session information?
你的意思是:從外部數(shù)據(jù)源中檢索一些屬性,將其映射到 keycloak 的 id 和訪問令牌。?通常您只檢索用戶核心信息,可能還有角色和其他自定義屬性(不是會話信息)。Keycloak 本身作為基于 openIDConnect 的授權服務器,將生成訪問令牌,其中已經(jīng)包含有關哪些受保護資源可以被誰訪問的信息,因此您實際上不需要從其他地方導入任何會話,也不必擔心上述令牌的生成.
關于: 還設置了同一用戶同時多次登錄的用戶限制條件。當您第一次登錄時,您到底想完成(或避免什么?)您的客戶收到一個有效時間為 X 的 Bearer 令牌,在那段時間內(nèi)您不需要再次登錄,直到令牌過期或被刪除;再次是您的 Auth 服務器負責的事情,而不是您實現(xiàn)的事情。您想要更具體的東西嗎?
我在想,這可以通過檢索 keycloak 數(shù)據(jù)源中可用的用戶會話信息來解決。如果我使用外部數(shù)據(jù)源,keycloak 是否仍然維護會話信息?這聽起來不對,你指的是什么會話數(shù)據(jù)?或者你需要訪問?您的用戶數(shù)據(jù)、范圍、角色等可以通過 KEycloak Rest API ( https://www.keycloak.org/docs-api/6.0/rest-api/index.html#_overview )訪問。您的外部數(shù)據(jù)源用于與用戶相關的核心數(shù)據(jù)(不是外部會話),您為什么認為需要導入外部會話?
添加回答
舉報