簡體   English   中英

ForgeRock(用於SSO)登錄和注銷的預期行為

[英]Expected Behaviour of ForgeRock (for SSO) login and logout

我公司已使用ForgeRock實施了SSO。 我們已經集成了兩個應用程序(例如app1和app2)登錄,並且應用程序的數量將不斷增長。 有關預期工作的查詢:

登錄行為:

  1. 用戶登錄app1並開始在其中執行操作,
  2. 打開新的標簽/窗口命中URL app2 url。

因此,現在,他應該直接進入app2的主頁,而不是再次請求app2的登錄憑據。 對? 但是,同樣發生這種情況的是,點擊app2會如何將信息(該用戶已登錄到app1的信息)傳回給app2? 是通過瀏覽器的Cookie讀取還是該系統/計算機的登錄用戶? 如果是,我們如何讀取已登錄用戶,以及如果應用程序對外公開給互聯網用戶該怎么辦? 互聯網用戶可以訪問嗎? 在這種情況下,登錄用戶的閱讀可能沒有意義,並且我們的某些應用程序已暴露於Internet。

注銷行為

如果用戶完成了在app1上的工作並單擊注銷,但是在app2的工作中(例如,表單提交或任何多步驟活動)正好退出他對app2的公平對待放開他到目前為止所做的一切。 但這是預期的工作方式嗎?

從一個應用程序注銷用戶是否應該將該用戶從與同一SSO集成的所有應用程序中注銷? 如果是這樣,則意味着不要在應用程序端使會話無效,還將請求發送到SSO服務器以注銷。 但這還意味着所有應用程序都需要檢查是否已注銷用戶的每個請求? 我認為這太苛刻了。 對於已經登錄用戶的應用程序的每個請求,我還需要檢查他是否已從SSO注銷? 它應該如何工作?

經過大量研究,最終我發現:

登錄行為:

對 ! 如果用戶登錄到app1,然后在同一瀏覽器的另一個選項卡/窗口(非私有模式)中訪問app2的網址,則該用戶應該已經登錄到app2。 app2不需要單獨的登錄。

app2如何知道要登錄的用戶?

這是通過與SSO集成的所有應用通過cookie讀取來完成的。 SSO實施將在用戶的瀏覽器窗口中為特定域設置Cookie,該Cookie可供應用程序使用。 該cookie將告訴應用程序哪個用戶已登錄。現在,應用程序知道誰是經過身份驗證的用戶,並且應用程序可以執行其特定的操作,例如檢查授權和其他常用的東西。 但是,如果用戶為app1 chrome和app2 firefox使用不同的瀏覽器 ,則由於無法在這種情況下為app2共享cookie,因此用戶必須經過身份驗證過程。 無論應用程序是否暴露於Internet,此行為都將保持不變。

注銷行為:

您可以選擇不同的口味。 沒有硬性規定。 如果您想從一個應用程序注銷也應該暗示從所有其他應用程序注銷,那么可以的。 一種方法是在所有請求中的瀏覽器cookie中傳遞SSO實現設置的“令牌” 如果在應用程序端收到了有效令牌,則執行該請求,否則將其注銷。

同樣,如果您在注銷一個應用程序的同時運行其他應用程序也沒問題,則無需在每個請求中傳遞令牌,而注銷僅應在應用程序級別進行。 無需請求SSO注銷。

暫無
暫無

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

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