2012-05-29 68 views
6

我的要求是在asp.net中使用SAML2.0實現SSO。 我在我的最後有2個供應商。想要將用戶從一個站點傳遞到其他站點而不登錄到第二個站點。我以前從未使用過SAML2.0。 任何人都可以幫我解決問題,我該怎麼做。在asp.net中使用SAML2.0的SSO

感謝, 蒂帕

回答

6

我建議你使用它簡化了處理基於SAML的身份驗證的Windows標識基礎子系統。

的主題是相當廣泛的,所以你需要一個很好的手冊,好在有一個,對於無MS:

http://msdn.microsoft.com/en-us/library/ff423674.aspx

簡而言之:通過兩個服務器之間的身份,其中一人應實施身份提供商服務(安全令牌服務),第二個必須接受由第一個創建和簽名的SAML令牌。

+0

謝謝Wiktor的Zychla爲您的寶貴意見。讓我看看這個。 – dipa

+0

@Wiktor Zychla這是很酷的鏈接 – Ravia

21

首先讓我們用令牌格式來區分協議。我假設你在談論協議而不是令牌格式。但以防萬一這裏有區別:

對你們在其中有多個身份提供商的場景另一方面。 Wiktor建議的書(我與他人共同撰寫)在Federated Identity with Multiple Partners chapter上更詳細地解釋了這種情況。我建議您閱讀它以獲取身份聯合背後的概念。讓我給你簡短的文章和一些實現細節。有兩種解決方法:

  • 在應用程序級別實現它。 WIF將允許您信任多個身份提供商令牌(這是通過X509證書完成的)。然後,您必須根據網址(如https://idp1.yourapp.comhttps://yourapp.com/idp1)或用戶選擇(通過讓主頁有兩個鏈接,每個身份提供者一個鏈接)爲每個身份提供者生成登錄請求。您還必須對來自這些身份提供者的聲明進行規範化(也許其中一個會向您發送「名稱」聲明,另一個聲明)。

    YourApp --> Identity Provider 1 
         \-> Identity Provider 2 
    
  • 使用所謂的「聯邦提供者」。這是另一臺將向您的應用程序發放令牌的服務器,它將與您的身份提供商建立信任關係。您不要讓應用程序信任這兩個身份提供者,而只信任您的聯邦提供者,而提供者將信任身份提供者。這是一個信任鏈。

    YourApp --> Federation Provider --> Identity Provider 1 
               \-> Identity Provider 2 
    

這種架構允許您:

  • 拓展您的身份提供者不接觸你的應用程序
  • 如果以後有你只要複製你的第一個
  • 實施的第二應用
  • 你得到免費
  • 你得到一個聲明變換引擎單點登錄(如果你使用像ADFS)
  • ,如果你使用類似ADFS你SAML 2協議建(而不必手動實現它與擴展下面提到)

當然,壞處是你現在有其他東西來維護(ADFS服務器)。

+0

這麼棒的總結。謝謝。令人驚訝的是很難找到它凝聚到這。 –

3

我會建議使用ComponentSpace。他們提供庫以適應SAML 2.0令牌和SAML 2.0協議的所有用例。除CTP外,WIF目前不提供對SAML 2.0協議和令牌格式的支持。

+1

.Net 4.0支持SAML 2.0 – Ravia

+0

@Ravia - 你可以提供任何可用的鏈接。據我所知,看到這個鏈接 - http://connect.microsoft.com/site116​​8/Downloads/DownloadDetails.aspx?DownloadID=36088它是一個CTP版本,而不是一個RTM。 – kshbondili

+0

你是對的,我的錯誤上來投票答案。 – Ravia

4

我們寫了一個非常簡單的開源C#組件與ASP.NET應用程序的使用方法:https://github.com/jitbit/AspNetSaml(代碼示例包括)

它很短,基本的,但是那是目標。不要添加一個龐大的第三方軟件包,只需將一個簡短的C#文件放入您的項目中,並且您已準備好SAML。這件事已經爲我們帶來了多年,甚至在.NET 3.x的

[免責聲明]我的貢獻者之一。

PS。叉子和貢獻是非常受歡迎的。