Wcf 使用WIF创建自定义STS-IP及其原因

Wcf 使用WIF创建自定义STS-IP及其原因,wcf,wcf-data-services,saml,wif,Wcf,Wcf Data Services,Saml,Wif,我需要为我们的web应用程序和服务实现一个STS-IP服务器。服务器需要为以下场景颁发SAML令牌: 业务合作伙伴提交其SAML令牌,该令牌将转换为SAML令牌,并声明我们的应用程序所需的声明。此令牌用于访问我们的Web应用程序和服务 我们面向公众的应用程序需要用户登录(通过表单身份验证),然后使用SAML令牌访问我们的web应用程序和服务 我们的客户端(没有STS信任)需要通过STS-IP服务器的身份验证,获取SAML令牌,并使用该令牌访问我们的WCF服务 在所有3种场景中,我们需要对应用程序

我需要为我们的web应用程序和服务实现一个STS-IP服务器。服务器需要为以下场景颁发SAML令牌:

  • 业务合作伙伴提交其SAML令牌,该令牌将转换为SAML令牌,并声明我们的应用程序所需的声明。此令牌用于访问我们的Web应用程序和服务
  • 我们面向公众的应用程序需要用户登录(通过表单身份验证),然后使用SAML令牌访问我们的web应用程序和服务
  • 我们的客户端(没有STS信任)需要通过STS-IP服务器的身份验证,获取SAML令牌,并使用该令牌访问我们的WCF服务
  • 在所有3种场景中,我们需要对应用程序和服务使用的SAML令牌进行自定义声明。我们的想法是,一旦我们确定了用户,我们将在后端系统中查找他们的授权,并附上声明

    在这些场景中,您可以假设后端身份验证存储是一个自定义实现,身份验证存储在Active Directory中,授权存储在数据库中

    所以我的想法是,我们需要使用类似Windows Identity Framework的东西创建一个定制的STS-IP服务器。但我也一直在读到,你不应该这样做,因为这可能需要一些时间

    我可以使用现成的STS-IP服务器吗?我所看到的一切都是一个系统到另一个系统之间的映射(SAML到SAML或AD到SAML)

    为什么构建一个生产就绪的STS-IP需要“很长时间”?我很容易用WIF构建了一个,但我想我不理解这样做的风险。

    关于“这将花费很长时间”,说明如何做到这一点的文档非常糟糕。请看这里:

    无论如何,您只需要查看一下Microsoft提供的代码示例:GoogleforIdentity开发者培训工具包。这应该有助于你开始工作。

    他们的“为什么不”相对简单:当你可以在一天内推出现成的STS,涵盖你公司可能想到的所有东西时,为什么要花费数周的时间来构建一个可能只处理一个用例的东西?自己构建它还需要您成为SAML方面的专家(这可能不是您公司时代最好的美国)

    退房--


    祝你好运——伊恩,你为什么不考虑使用ADF?如果身份验证的后备存储是AD,那么ADFS可能是一个很好的评估对象

    同意@eugenio-为什么不使用ADFS

    ADFS只能根据前面讨论的AD进行身份验证,但它可以从AD/LDAP/SQL server派生授权属性

    STS的螺母和螺栓在VS 2010和identity工具包中提供。简单的STS可以快速原型化

    这里有一些例子。我们已经提到了初学者

    最困难的部分是获得正确的安全性,特别是如果这是生产系统的一部分。根据“史蒂夫·安全集”:

    听起来好像我认为这会是一场灾难 同步开发此系统,并具有 它安全地工作,但实际上在那里 有很多东西需要研究 为了保护网络,员工, 而这些数据可能 与……互动。这很难发展 应用程序安全。远 更难开发安全的应用程序 谁的唯一责任是安全 相关的

    这就是互联网上所有样本都有粗体免责声明的原因:


    不要在生产环境中使用

    在编写您自己的STS之前,您可能希望查看本博客,仔细查看STS中可能需要的功能。仅仅因为你可以自己建造一个,并不总是意味着你应该建造一个


    我必须就文件达成一致意见。我确实发现了一个名为“初学者”的项目,它非常有用。我们正在考虑它,但是我们希望对我们的网站进行身份验证,以便对STS-IP进行身份验证。我不确定ADFS是否能做到这一点。此外,我们的广告帐户具有自定义属性,我们需要将这些属性转换为索赔。我还没有安装ADFS,因为我还没有安装Windows测试服务器。如果您试图从网络外的计算机访问它,ADFS将向您显示一个表单。如果你在网络中,它会简单地“工作”。查询AD中的属性并将其作为令牌中的声明发送是ADFS中的“开箱即用”功能。此外,它是免费的:-)ADFS不支持的是针对任何非AD的内容进行身份验证(这似乎与您的情况不同)