【问题标题】:SSO using SAML2.0 in asp.net在 asp.net 中使用 SAML 2.0 的 SSO
【发布时间】:2012-06-03 10:06:15
【问题描述】:

我的要求是在 asp.net 中使用 SAML2.0 实现 SSO。 我确实有 2 个供应商。想要将用户从一个站点传递到另一个站点而不登录第二个站点。我以前从未使用过 SAML2.0。 谁能帮我看看我该怎么做。

【问题讨论】:

    标签: asp.net saml-2.0


    【解决方案1】:

    首先让我们区分协议和令牌格式。我假设您在谈论协议而不是令牌格式。但以防万一,这里有区别:

    另一方面,您有一个场景,其中有多个身份提供者。 Wiktor 建议的书(我合着)在Federated Identity with Multiple Partners chapter 上更详细地解释了这种情况。我建议您阅读它以了解身份联合背后的概念。让我给你这篇文章的简短版本和一些实现细节。有两种方法可以解决这个问题:

    • 在应用程序级别实现它。 WIF 将允许您信任多个身份提供者令牌(这是通过 X509 证书完成的)。然后,您必须根据 url(如 https://idp1.yourapp.comhttps://yourapp.com/idp1)或用户选择(通过具有两个链接的主页,每个身份提供者一个链接)为每个身份提供者生成登录请求。您还必须规范来自这些身份提供者的声明(也许其中一个会向您发送“名称”声明,而另一个会发送“upn”声明)。

      YourApp --> Identity Provider 1
              \-> Identity Provider 2
      
    • 使用所谓的“联合提供者”。这是另一台将向您的应用程序颁发令牌的服务器,它将与您的身份提供者建立信任关系。不是让您的应用程序信任这两个身份提供者,而是只信任您的联合提供者,而联合提供者将信任身份提供者。这是一条信任链​​。

      YourApp --> Federation Provider --> Identity Provider 1
                                      \-> Identity Provider 2
      

    此架构允许您:

    • 在不接触您的应用程序的情况下扩展您的身份提供者
    • 如果您以后有第二个应用程序,您只需复制第一个应用程序的实现
    • 您可以免费获得单点登录
    • 您将获得一个声明转换引擎(如果您使用 ADFS 之类的工具)
    • 如果您使用 ADFS 之类的东西,您将获得内置的 SAML 2 协议(而不必使用下面提到的扩展手动实现它)

    当然,缺点是您现在需要维护其他东西(ADFS 服务器)。

    【讨论】:

    • 如此精彩的总结。谢谢你。出乎意料地很难找到它浓缩到这一点。
    【解决方案2】:

    我们编写了一个非常简单的开源 C# 组件以用于 ASP.NET 应用程序:https://github.com/jitbit/AspNetSaml(包括代码示例)

    它非常简短和基本,但这就是目标。无需添加庞大的第 3 方包,只需将一个简短的 C# 文件放入您的项目中,您就可以使用 SAML。这件事已经为我们工作了多年,即使在 .NET 3.x 上也是如此

    [免责声明]我是贡献者之一。

    附言。非常欢迎分叉和贡献。

    【讨论】:

      【解决方案3】:

      我建议您使用 Windows Identity Foundation 子系统,它可以简化处理基于 SAML 的身份验证。

      这个主题相当广泛,所以你需要一本好手册,幸运的是,有一本免费的,来自 MS:

      http://msdn.microsoft.com/en-us/library/ff423674.aspx

      简而言之:要在两台服务器之间传递身份,其中一台应实现身份提供程序服务(安全令牌服务),第二台必须接受由第一台创建和签名的 SAML 令牌。

      【讨论】:

      • 感谢 Wiktor Zychla 为您提供宝贵的 cmets。让我看看这个。
      【解决方案4】:

      我会推荐使用 ComponentSpace。它们提供了适用于 SAML 2.0 令牌和 SAML 2.0 协议的所有用例的库。 WIF 目前不支持 SAML 2.0 协议和令牌格式,但 CTP 除外。

      【讨论】:

      【解决方案5】:

      您可以为您的 asp.net 站点试用 miniOrange’s SAML SSO module。它实际上是一个 httpmodule,可以添加 SSO 作为 ASP.NET 站点的登录方法,这里的主要内容是它是一个非常简单的设置。该模块本身为 SSO 配置提供了一个管理控制台。它有助于保护我网站的私人页面不被公众访问,并且只允许我的客户用户访问存储在他的 AD 中。 我认为这可能是最适合你的。干杯!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多