簡體   English   中英

在沒有登錄頁面的情況下獲取REST請求時集成Keycloak登錄進行身份驗證

[英]Integrate Keycloak login for authentication when getting a REST request without login page

我有一個 Java web 應用程序,它具有內部身份和訪問管理。 它現在因 Keycloak 的集成而暫停。

在它的 web 接口旁邊,我的應用程序還有一個 REST 端點,例如/api/authentication/login (除其他外,但這是起點),之前可以調用它以通過以下方式獲取令牌: curl -X POST http://localhost:8080/api/authentication/login -H 'Authorization: admin:admin'

通過在此處集成 Keycloak,我無法再通過該 REST 端點登錄。 我總是被重定向到 Keycloak 的登錄頁面,這在保護我的應用程序方面可能很有意義。 但是這里我想繞過 Keycloak 登錄頁面,直接檢查憑據,如果匹配則返回一個令牌。

我有什么選擇來實現這一目標?

順便說一句:該應用程序使用 Spring Boot。

我試圖添加一個新的 Keycloak OpenID 客戶端,它將覆蓋/api Home URL 並且我還將選項“客戶端身份驗證”設置為false但沒有效果,即我仍然被重定向到 Keycloak 登錄頁面。

我會 go 比 Dhaval 更遠,並說建議不要那樣 go。

用戶不應針對您的 API 進行身份驗證,而應直接針對授權服務器 (Keycloak) 進行身份驗證。 客戶端 (UI) 和資源服務器 (REST API) 都不應訪問用戶機密。

只需將您的客戶端 (UI) 配置為將用戶重定向到 Keycloak 以獲取訪問令牌,並在向資源服務器 (REST API) 發出請求時將此令牌作為 Bearer Authorization header 發送。 為此使用 OAuth2 客戶端庫(最終標記為 OpenID / OIDC)。

請參閱這些教程以了解最小的 Keycloak 設置和 Spring 資源服務器安全配置: https://github.com/ch4mpy/spring-addons/blob/master/samples/tutorials

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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