使用WCF服务创建自定义WS-Federation标识提供程序

使用WCF服务创建自定义WS-Federation标识提供程序,wcf,identity,ws-federation,Wcf,Identity,Ws Federation,这与我的问题有关,但我确信不会重复: 自从提出这个问题以来,一些来自商业的输入和一些研究让我相信,我可以将令牌的发行委托给身份提供商本身,而不是实现一个安全的令牌服务来包装我的定制身份提供商 身份提供者是一种WCF服务,当它基于用户的一些标识数据成功地对用户进行身份验证时,它会返回一组声明。例如 [ServiceContract(Namespace = "http://namespace")] public interface IIdService { [FaultContract(ty

这与我的问题有关,但我确信不会重复:

自从提出这个问题以来,一些来自商业的输入和一些研究让我相信,我可以将令牌的发行委托给身份提供商本身,而不是实现一个安全的令牌服务来包装我的定制身份提供商

身份提供者是一种WCF服务,当它基于用户的一些标识数据成功地对用户进行身份验证时,它会返回一组声明。例如

[ServiceContract(Namespace = "http://namespace")]
public interface IIdService
{
    [FaultContract(typeof(IdServiceFault))]
    [OperationContract]
    ICollection<Claim> Authenticate(string idDatum1, string idDatum2);
}
[ServiceContract(命名空间=”http://namespace")]
公共接口IIdService
{
[FaultContract(类型为(IdServiceFault))]
[经营合同]
ICollection身份验证(字符串idDatum1、字符串idDatum2);
}
其中
Claim
Microsoft.IdentityModel.Claims.Claim
。我目前一直在使用一个示例性的高质量STS实现,作为一个网站项目,但如果可能的话,我只想将颁发和签署令牌的任务转移到身份提供程序中,并最终将其限定为WS-Federation身份提供程序,稍后我可以将其包含在Azure访问控制的提供程序中


如果这是可能的,我需要在WCF服务中做些什么?

“我们不只是拼凑一个WS-Federation身份提供者”-其中涉及许多必要的复杂性,主要是为了确保所断言的声明的安全性、完整性和可证明性

你不想把这些东西弄错-看看最近在Target、Home Depot、Sony和其他公司发生的事情

我强烈建议你反复阅读Michele Leroux Bustamante的著作,直到你彻底理解STS的作用以及其中涉及的各种复杂性

请注意,为了构建安全的STS,您需要支持SAML、WS-Security、WS-Trust、WS-Federation,并使用SSL安全传输令牌和数据。您需要仔细实现通信协议的各个阶段,以允许身份信息的联合

一旦你深入研究了主题,你就会更好地理解为什么将STS构建为一个与现有身份服务并排/在其前面的外观服务可能是一个好主意,而不是以构建STS所涉及的相当复杂的方式“污染”现有服务

如果这一切看起来像是一个很大的工作,它是(它应该是-安全是真的,真的很难!)


<>我将>强>强/强>建议您考虑使用TythTcCuess的身份服务器而不是自己构建。awesome&团队在构建一个健壮、设计良好、开源的身份服务器方面做了出色的工作,该服务器支持WS-Fed以及OpenID、OAUTH等。

“我们不只是拼凑一个WS-Federation身份提供者”——我不知道这是@Rich吗。我正在寻找替代一个已经“拼凑起来”使用一个看起来狡猾的VS网站项目模板,这个问题是我在这个领域的第一个研究途径之一。感谢您提供的信息。“我不知道这一点吗”-很高兴听到您知道这里的一些问题;)