簡體   English   中英

一個網站可以針對多個ADFS服務器進行身份驗證嗎?

[英]Can a website authenticate against multiple ADFS servers?

我們有一個使用FormsAuthentication的ASP.NET/MVC網站。 通常,當用戶嘗試訪問頁面且沒有有效的FormsAuthentication cookie時,IIS會將其重定向到登錄視圖。 當用戶對登錄控制器執行HttpPost時,我們的控制器操作將調用我們的WebApi Web服務,該服務將針對Sql Server數據庫驗證用戶名,密碼和customerid。 如果認證通過,則控制器操作將設置FormsAuthentication cookie,並重定向到用戶要求的頁面。

現在,銷售“ Single Sign-On”(單點登錄)的聲音越來越大,盡管我不清楚它們的含義。 據我所讀,在Microsoft World中,這通常意味着訪問MS的Active Directory聯合身份驗證服務。

在這一點上,我幾乎不知道它是如何工作的,但是在我深入研究之前,可以將身份驗證代碼放在WebApi Web服務中,在該服務中我們可以選擇針對Sql Server數據庫還是針對哪個ADFS服務器適合指定客戶?

我們的問題是,我們不知道有多少用戶在為數百個客戶服務。 許多客戶不會運行ADFS,而這樣做的客戶將各自擁有自己的ADFS服務器。

關於單一登錄,我看到的大部分內容似乎都涉及到將瀏覽器重定向到ADFS服務器,然后重定向回,並且如果您已經登錄,則看起來根本避免登錄。我認為我們沒有就我們而言,可以做到這一點。 在點擊數據庫之前,我們不知道重定向到哪個ADFS服務器。

因此,問題-是否有可能完全從WebAPI Web服務中的C#代碼進行ADFS身份驗證?

(一種可能的麻煩是-網站本身對任何數據庫的訪問均為零。其web.config中唯一的配置設置是該Web服務的基本URL。無論身份驗證發生在該Web服務中,而不是在該網站中。)

首先,“單點登錄”(SSO)不限於ADFS。 這只是意味着您只鍵入一次憑據,然后您訪問的所有系統都會自動“識別”您; 所有后續授權請求都是透明的。 例如,如果您的公司Intranet(相同的AD域)中有多個使用Windows身份驗證的網站,則您具有SSO:登錄到計算機時進行一次身份驗證,然后您的Web瀏覽器使用NTLM自動對這些網站進行身份驗證或Kerberos。 在這種情況下,沒有ADFS。

ADFS(通常更稱為“聯合會”)允許的是SSO跨越安全邊界。 在Windows世界中,安全區域通常是由Active Directory林創建的。 使用Windows身份驗證提供的SSO可以訪問該林中的所有內容。 但是,一旦離開此區域(SaaS應用程序,另一個公司網絡中的網站),就需要另一個身份驗證協議來執行SSO,並且這些協議是在ADFS中實現的。

然后關於您的特定問題:

  • 您可以做的是使用AdfsAuth而不是使用FormsAuth。 當未知用戶訪問頁面時,他將被重定向到ADFS進行身份驗證(使用您正確提到的瀏覽器重定向)。 要知道哪個ADFS服務器應該對您的用戶進行身份驗證,您確實需要一種區分它們的方法:每個客戶的IP范圍列表? 每個客戶使用不同的URL? 如果您沒有這樣的東西,那么唯一的方法就是向他們顯示選擇的列表,例如:“我為CompanyA工作”,“我為CompanyB工作”,“我為CompanyC工作”,“我不工作”不能在任何一家公司工作,並希望使用FormsAuth進行身份驗證。”
  • 在這種情況下,您的WebApi Web服務必須要做的是:如果我知道要使用哪個ADFS服務器,請在那里重定向用戶。 否則,將照常使用數據庫對用戶進行身份驗證。
  • 當您將AdfsAuth用於客戶時,您的數據庫無用。 您可以刪除與此客戶有關的所有憑證。

完全通過WebAPI中的C#代碼進行ADFS身份驗證

可以在您的服務中“重新實現” ADFS,但是如果這樣做,您將不會獲得SSO。 使用聯合身份驗證時,會將用戶重定向到其公司的ADFS服務器。 此ADFS服務器與他的計算機位於同一域中,因此用戶在此處獲取SSO。 同樣,如果您對自己進行身份驗證,則用戶將無法獲得SSO,因為用戶與您的站點不在同一安全區域中。

向多個身份提供者進行身份驗證時,通常會將其重定向到您自己的 STS。 因此,在這種情況下,您將www.yourapp.com重定向到sts.yourapp.com,后者又重定向到sts.somecustomer.com。

該圖顯示了RP-STS

啟用此類數據流的特定工具是home realm參數( whr和AD FS Powershell API(允許IDP維護)。

RP-STS充當應用程序的信任點,並管理適當IDP的選擇。 一個RP-STS,許多IP-STS。 您的每個客戶的IP-STS都被設置為AD FS中的“聲明提供者信任”。

與往常一樣,維托里奧(Vittorio)所涵蓋的話題比我能做的要好。

該圖顯示了兩個IP-STS通過單個RP認證到單個RP-STS

暫無
暫無

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

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