【问题标题】:Use for every Reyling Party seperate client Certificate?为每个依赖方使用单独的客户端证书?
【发布时间】:2014-06-27 04:36:20
【问题描述】:

我正在阅读有关 SSO 的内容,并使用本教程 http://chris.59north.com/post/2013/04/09/Building-a-simple-custom-STS-using-VS2012-ASPNET-MVC.aspx 创建自定义 STS。

如果我理解正确,则在 STS 机器上安装了证书。 reyling 方发送 x509 签名的指纹。因此,依赖方将仅接受具有适当证书的 STS 声明。这是正确的吗?

如果是这样,我想实现每个依赖方都向安装了 STS 的 STS 发送证书。如果 STS 知道发送的证书,则 STS 会根据请求在其受信任的信赖方列表中查找。

这种实现是一个好主意吗?这是一个好的做法吗?有没有很好的资源来实现这个?

谢谢

【问题讨论】:

    标签: c# asp.net-mvc-4 single-sign-on wif


    【解决方案1】:

    实现自定义 STS 是一项艰巨的工作。我建议您以 windows azure ACS 或 Thinktecture free STS 作为起点。
    话虽如此,为依赖方提供单独的证书是一种常见的做法。但是,此证书的私钥通常存储在 STS 的某个数据库中(ACS 和 Thinktecture 都支持这一点)。依赖方只知道公钥。 然后,acs 使用安全令牌对安全令牌(SAML2 或 JWT)进行签名,并且依赖方可以使用公钥(或指纹)来验证签名。 另请注意,SAML2 令牌也可以加密(在签名旁边),您可以为此使用不同的证书。 我个人建议使用单独的证书,如果 STS(或您的组织)拥有某种网站,“任何人”都可以将他们的申请注册为依赖方。如果您的所有相关方都是“内部”应用程序,我至少会考虑使用单个证书来签署所有安全令牌。这样做的好处是您可以在联邦元数据文档(位于 FederationMetadata/2007-06/FederationMetadata.xml)中发布(公共)密钥。如果您想更新密钥,您可以在那里更新它(首先在那里发布新的和旧的密钥,然后只发布新的密钥)。然后,依赖方可以根据此元数据更新那里的密钥(adfs 使用类似的方法)。 所以底线:每个 RP 有一个单独的证书很好,但只有一个(用于签名 - 不是加密)更容易更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-11
      相关资源
      最近更新 更多