2011-09-04 76 views
7

我有一個在IIS7上構建和測試的WCF Web服務應用程序。關於身份驗證,我想爲訪問Web服務中的操作的消費者實現一個sql server託管的用戶標識和密碼身份驗證。不過,有人告訴我,我的公司政策規定我將SAML實施到我的網絡服務中。這意味着任何訪問我的Web服務操作的客戶端都需要使用SAML 2.0進行身份驗證。我對SAML不熟悉,但想知道並開始如何在我的Web服務中實現它。我一直聽到兩個術語 - 服務提供商和身份提供商,基於網絡上的定義,我假設服務提供商是我的網絡服務。身份提供者是用戶身份驗證的地方,身份提供者向我的Web服務提供斷言,然後讓客戶端訪問操作。我理解這個理論,但不知道如何付諸實踐。訪問我的Web服務的客戶端不是內部的,即它們是外部(外部網絡客戶端),因此在這種情況下,身份提供者是什麼,以及如何將代碼添加到我的Web服務中以使其成爲服務提供者?如何將SAML身份驗證集成到WCF Web服務應用程序

我希望你明白我的困境,任何人都可以解釋我需要採取的辦法和幫助我完成了Web服務,不勝感激任何樣品或教程。

回答

4

我認爲SAML 2.0不是由標準WCF提供的。要使其工作,您必須將WCF與WIF(Windows身份基礎)結合使用。在這裏,您有使用WCF和WIF以及基於聲明的授權的very complex example。該示例使用SAML 1.1,但只有配置更改才能使其適用於SAML 2.0。

您的問題通常被稱爲聯合身份驗證或者驗證用戶對STS聯合身份(服務令牌服務),並它接收安全令牌(它可以是例如SAML令牌)。與客戶通過真實服務(RP - 中繼方)通過安全令牌的地方相比。那麼你打算建立什麼?如果您的公司政策要求使用SAML,他們很可能已經擁有STS,並且您只需按照本文中提到的SAML令牌對客戶端進行身份驗證即可。

+0

你是正確的,我們有STS。所以要使用saml令牌來驗證客戶端,您是否提供了方法要走的示例? – wcfvemi

2

2011年以來,針對聲明感知WCF服務支持具有apparently improved與.NET 4.5的版本。我那篇文章的情況下,它都沒有改變複製信息,但作爲這個答案的時候,過程似乎是簡單的:

  1. 添加在您的WCF到WIF參考(Microsoft.IdentityModel.dll)服務項目。由於這是與.NET 4.5交付,我不相信NuGet包是必要的。

  2. 使用下面的代碼示例來創建自託管聲明感知服務:

    變種宿主=新的ServiceHost(typeof運算(ClaimsAwareWebService),新URI( 「myUri」)); FederatedServiceCredentials.ConfigureServiceHost(host);

    host.Open();

  3. 設置你的WCF服務使用federatedServiceHostConfiguration行爲擴展。

相關問題