2011-09-04 77 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行为扩展。

相关问题