使用WCF服务创建自定义WS-Federation身份提供者

8
这与我的问题有关,但我相当确定它并不重复:寻找安全且强大的STS实现 自提出该问题以来,业务方面的一些反馈和研究表明,与其实现一个安全的令牌服务来包装我的自定义身份提供程序,我可以将令牌的发放委托给身份提供程序本身。
身份提供程序是一个WCF服务,当成功验证用户时,基于某些用于标识用户的数据返回一组声明。例如:
[ServiceContract(Namespace = "http://namespace")]
public interface IIdService
{
    [FaultContract(typeof(IdServiceFault))]
    [OperationContract]
    ICollection<Claim> Authenticate(string idDatum1, string idDatum2);
}

其中ClaimMicrosoft.IdentityModel.Claims.Claim。我目前卡在一个只有示例质量的STS实现中,作为一个网站项目,但如果可能的话,我想将发行和签署令牌的任务简单地转移到标识提供者中,并最终将其作为WS-Federation身份提供程序进行资格认证,以后可以包括在我的Azure Access Control提供程序中。

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

1个回答

4
"One doesn't just knock together a WS-Federation Identity Provider" - 这里涉及许多必要的复杂性,主要是为了确保所断言的声明的安全性、完整性和可证明性。 你绝不想在这些事情上出错——看看最近发生在Target、Home Depot、Sony等公司身上的事情! 我强烈建议您阅读并反复阅读Michele Leroux Bustamante的"Building A Custom Security Token Service" article,直到您彻底理解STS的角色以及完成其所涉及的各种复杂性。
请注意,为了构建一个安全的STS,您需要支持SAML、WS-Security、WS-Trust、WS-Federation,并使用SSL来安全传输令牌和数据。您需要仔细实现必要的通信协议的各个阶段,以允许联合身份信息。
一旦您深入掌握了这个主题,您将更好地理解为什么将STS构建为一个外观服务,它坐落在/前面您现有的身份服务旁边,而不是“污染”您现有的服务,其中涉及构建STS的重大复杂性。
如果这一切看起来像是非常艰苦的工作,那么确实如此(而且应该是这样——安全确实非常、非常难!)。
我强烈建议您考虑使用Thinktecture的Identity Server,而不是自己构建。Dominick Baier和他的团队已经做了出色的工作,构建了一个强大、精心设计、开源的身份验证服务器,支持WS-Fed以及OpenID、OAUTH等协议。

“不是随随便便就能搭建一个WS-Federation身份提供者的。” - @Rich,我深有体会。我想要替换掉一个使用了可疑的VS Web站点项目模板“随随便便”搭建的提供者,这个问题是我进入这个领域进行研究的第一个途径之一。感谢您的信息。 - ProfK
“我不是早就知道了吗” - 很高兴听到你意识到这里的一些问题 ;) - Rich Turner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接