2014-11-25 111 views
7

这涉及到一个自定义的WS联合身份提供者,但我肯定不重复,我的问题:Looking for a secure and robust STS implementation创建使用WCF服务

由于要求,从商业方面的投入,和一些研究,已经使我相信,不是实现安全的令牌服务来包装我的自定义身份提供者,而是可以将令牌的发放委托给身份提供者本身。

身份提供者是一个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访问控制的提供商中。

如果这是可能的,我需要什么样的WCF服务呢?

回答

3

“一个不只是拼凑一个WS联合身份提供商” - 有很多必要的参与,主要是为了确保被断言权利要求的安全性,完整性和可证的复杂性。

你不想得到这个东西错了 - 看看在Target,家得宝,索尼和其他的后期发生了什么事!

我强烈建议您阅读和重新阅读米歇尔·勒鲁布斯塔曼特的"Building A Custom Security Token Service" article,直到你完全理解了STS和参与这样做各种复杂的角色。

注意的是,为了建立一个安全的STS你需要支持SAML,WS-Security的,WS-信任,WS-联邦和使用SSL令牌和数据的安全传输。您需要认真实施允许身份信息联合所需的通信协议的各个阶段。

深入了解主题后,您将更好地了解为什么将STS构建为位于现有身份认证服务旁边的幕墙服务可能是一个好主意 - 而不是“污染”你现有的服务,其中涉及构建STS所涉及的相当复杂的问题。

如果这一切看起来很多工作赫克,它是(它应该是 - 安全是真的,真的很难!)。

我会强烈建议您考虑使用Thinktecture的身份服务器,而不是建立自己的。该真棒Dominick Baier &团队已经做了构建一个稳健,精心设计的,开放源码的身份,支持WS-美联储以及OpenID的,OAUTH Server等

+0

“一个不只是拼凑的真棒工作一个WS联盟身份提供者“ - 我不知道这个@Rich。我期待用一个看起来很狡猾的VS网站项目模板来替代那些已经“敲在一起”的问题,而这个问题是我第一个研究这个领域的途径之一。谢谢(你的)信息。 – ProfK 2014-12-12 03:18:35

+0

“我不知道这一点” - 很高兴听到您意识到这里的一些问题;) – 2014-12-15 17:47:02