簡體   English   中英

如何使用 Keycloak 保護我的 JEE 項目的 REST API?

[英]How to secure REST API of my JEE project with Keycloak?

我正在開發一個具有前端(Angular)和 REST API 后端(JEE-Wildfly)的項目。

我的目標是保護我的 REST 端點。

我在 Keycloak 中創建了 2 個客戶端:

  • 后端客戶端,僅具有訪問類型承載
  • 具有訪問類型公共的前端客戶端

我想要的是擁有 OAuth2 流程並保護我的 REST API。 到目前為止,我已經嘗試讓我的后端訪問類型為機密並使用 POSTMAN 我已經能夠獲得我的訪問令牌,但是據我所知,要創建整個 OAuth 流程,我需要我的后端是 Bearer Only,是真的嗎? 那我怎樣才能得到訪問令牌呢? 因為我收到此錯誤:

{
    "error": "invalid_client",
    "error_description": "Bearer-only not allowed"
}

承載僅適用於 OAuth2 流嗎? 我想要的是:

  • 我嘗試訪問我的 Angular 應用程序,重定向到 Keycloak 身份驗證
  • 我獲得訪問令牌和刷新令牌,我將訪問令牌放入對 REST 端點發出的每個請求中

我在 Angular APP 中獲得的訪問令牌與我的后端期望的不記名令牌相同嗎?

非常感謝

如果我理解正確,那么您想要保護“一個應用程序”,即您的后端 API,因此您只需為此在 Keycloak 中定義一個客戶端。

將該客戶端的“訪問類型”設置為“機密”。

然后由您決定要使用哪個 OAuth 流程:

  1. 身份驗證代碼流:允許用戶使用他們的用戶名/密碼登錄您的客戶端。 (參見Authenction code flow ,它的 Auth0 文檔,但它解釋了流程)
  2. 客戶端憑證流:讓您的前端“安全”地訪問您的后端,而無需特定用戶。 (請參閱Client credential flow ,其 Auth0 文檔,但它解釋了流程)

要在您的客戶端上啟用選項 1,然后啟用“標准流程”。 要在您的客戶端上啟用選項 2,然后啟用“服務帳戶”。

您將在登錄期間獲得的訪問令牌是您將在前端和后端之間來回發送的訪問令牌。

暫無
暫無

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

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