簡體   English   中英

如何使用 keycloak 保護 angular/spring 應用程序?

[英]How to secure angular/spring app with keycloak?

我有一個 spring 引導(后端)和 angular(前端)應用程序,我想用 keycloak 保護(用於身份驗證)。

我有一個非常基本的部署,其中由 spring 創建的可執行 jar 也服務於客戶端代碼(來自角度)。

我看過幾個教程,前面和后面是分開的,前面使用代碼流+pkce將其身份驗證委托給keycloak,而后面是無狀態的,並檢查是否存在經過keycloak實例認證的jwt令牌。

但是,由於我有一個后端服務器,我想避免使用公共客戶端,而是依賴服務器端的反向通道令牌交換。 所以前面應該沒有keycloak實例的任何知識。

這可能嗎/這是最佳實踐嗎? 是否有一個前端庫可以幫助我實現這一目標? 我遇到了庫 keycloak-angular,但它似乎是針對第一種情況,即 SPA 直接連接到 Keycloak 而不是使用后端服務器。

在這種情況下,您不需要前端庫。 在您的前端,您應該只處理用戶 session(有一個 session cookie)並每次將 cookie 發送到您的后端。 然后后端服務器應該使用任何 oauth 客戶端與您的 keycloak 服務器進行通信,一旦獲得令牌,它就可以將它們與 session 的句柄一起保存在數據庫中。

下面是這個流程的樣子:

  1. 請求客戶端 -> 后端服務器 -> 向 keycloak 授權端點回復 302。 注冊的redirect_uri應該是后端服務器暴露的uri
  2. 用戶執行身份驗證/同意等。
  3. Keycloak 使用代碼重定向到 redirect_uri
  4. 后端接收代碼(因為它監聽重定向 uri 地址),並與 Keycloak 交換它。
  5. 后端接收訪問令牌並將其與 session ID 一起保存在數據庫中。
  6. 當客戶端使用其 session 向后端發出另一個請求時,后端會從數據庫中選擇一個訪問令牌並可以調用 API。

暫無
暫無

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

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