【问题标题】:How to integrate SAML authentication into WCF web service application如何将 SAML 身份验证集成到 WCF Web 服务应用程序中
【发布时间】:2011-09-04 04:53:04
【问题描述】:

我有一个在 IIS7 上构建和测试的 WCF Web 服务应用程序。关于身份验证,我想为访问 Web 服务中操作的消费者实现一个 sql server 托管的用户 ID 和密码身份验证。然而,有人告诉我,我的公司政策规定我将 SAML 实施到我的 Web 服务中。这意味着任何访问我的 Web 服务操作的客户端都需要使用 SAML 2.0 进行身份验证。我不熟悉 SAML,但想知道并开始了解如何在我的网络服务中实现它。我一直听到两个术语——服务提供者和身份提供者,基于网络上的定义,我假设服务提供者是我的网络服务。身份提供者是用户进行身份验证的地方,身份提供者向我的 Web 服务提供断言,然后我让客户端访问这些操作。我理解理论,但不确定如何投入实际实施。访问我的 Web 服务的客户端不是内部的,即它们是外部的(外网客户端),所以在这种情况下,身份提供者将是什么?如何将代码添加到我的 Web 服务以使其成为服务提供者?

我希望你能理解我的困境,谁能解释我需要采取的方法,非常感谢任何帮助我完成网络服务的示例或教程。

【问题讨论】:

    标签: wcf saml saml-2.0


    【解决方案1】:

    我认为标准 WCF 不提供 SAML 2.0。要使其工作,您必须将 WCF 与 WIF(Windows 标识基础)结合使用。在这里,您有 very complex example 使用 WCF 和 WIF 和基于声明的授权。该示例使用 SAML 1.1,但它只是配置更改以使其与 SAML 2.0 一起使用。

    您的问题通常称为联合身份验证或联合身份,其中用户针对 STS(服务令牌服务)进行身份验证并接收安全令牌(例如 SAML 令牌)。比客户端调用真实服务(RP - 中继方)传递其安全令牌。那你要建什么?如果您的公司政策要求使用 SAML,他们很可能已经拥有 STS,您只需要按照文章中提到的 SAML 令牌对客户端进行身份验证。

    【讨论】:

    • 你是对的,我们有 STS。因此,使用 saml 令牌对客户端进行身份验证,您提供的示例是要走的路吗?
    【解决方案2】:

    自 2011 年以来,随着 .NET 4.5 的发布,对 Claims-Aware WCF 服务的支持已达到 apparently improved。我会从那篇文章中复制信息以防万一它发生变化,但截至本答案发布时,该过程似乎很简单:

    1. 在 WCF 服务项目中添加对 WIF (Microsoft.IdentityModel.dll) 的引用。由于这是随 .NET 4.5 一起提供的,因此我认为不需要 NuGet 包。

    2. 使用以下代码示例创建自托管的 Claims-Aware 服务:

      var host = new ServiceHost(typeof(ClaimsAwareWebService), new Uri("myUri")); FederatedServiceCredentials.ConfigureServiceHost(host);

      host.Open();

    3. 将您的 WCF 服务设置为使用 federatedServiceHostConfiguration 行为扩展。

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 2019-09-05
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多