0

我剛剛開始嘗試使用WIF來處理我正在編寫的新應用程序。到目前爲止,我已經設法讓LocalSTS工作並設置我的web.config,以針對LocalSTS啓用聯合身份驗證。我的計劃是現在使用LocalSTS,並擔心稍後實施自定義STS。聯合身份驗證後唯一標識用戶

我想使用聯合身份驗證來驗證用戶,一旦他們通過身份驗證,授權他們在內部執行各種操作。因此,STS將進行身份驗證,並且應用程序將在內部進行授權。

爲此,我需要將每個用戶的授權操作(可能有數百個獨特操作)存儲在我的應用程序數據庫中,並且在用戶開始新會話後讀取這些操作並兌現它們。

我想知道的是,如何將使用聯合身份驗證進行身份驗證的用戶映射到存在於我的數據庫中的唯一用戶標識,同時仍將應用程序與我使用的STS保持不可知(ADFS,open auth等)?

nameidentifier令牌似乎是一個很好的候選人,但後來我讀到,SAML 2用一個不同的標記替換它。

我接近完全錯誤的方式嗎?我錯過了什麼嗎?

任何幫助將不勝感激。

回答

1

姓名是一個很好的候選人,但電子郵件,upn或甚至「唯一的數字」是一樣好。關鍵是 - 沒有最終的候選人。

我認爲,如果你關心的是保持不可知的,你應該考慮,而定義RP爲「STS端點的地址和一組用於匹配用戶索賠」的STS。

這種方式sts1可以定義爲「https://sts1.blah」和「用戶名聲明」,但sts2將是「https://sts2.blah」和「電子郵件」。

經過幾年的經驗,我認爲這種方法是唯一的可能性,因爲不同的產品提供不同的聲明,而且沒有「保證始終發生的一個聲明」。

話雖如此,我們大多數時候假設任何sts都會返回至少用戶名或電子郵件,rp可以信任這個。這簡化了用戶在rp端的匹配。