[英]Expected Behaviour of ForgeRock (for SSO) login and logout
我公司已使用ForgeRock實施了SSO。 我們已經集成了兩個應用程序(例如app1和app2)登錄,並且應用程序的數量將不斷增長。 有關預期工作的查詢:
登錄行為:
因此,現在,他應該直接進入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.