基于声明的身份验证 - SharePoint和一般情况

10

大家好,

我一直在阅读有关基于声明的身份验证(Claims Based Authentication)的内容,但仍有些困惑。 我正在尝试巩固我的理解,特别是与SharePoint 2010/2013相关的部分,但也包括一般情况下(即ASP.NET)。

我对各种技术术语的理解如下:

  • WIF(Windows Identity Foundation)- 用于消耗身份声明和构建自定义STS等的.NET库(API集)。

  • Relying Party - 声明的“使用方”(即SharePoint、ASP.NET网站等)。声明通过一个STS提供(仅限IP-STS?)。

  • STS(Security Token Service)- 发行安全令牌的专业Web服务。有两种类型,并且某些STS可能同时是两种类型?

    • RP-STS(Relying Party Security Token Service)
    • IP-STS(Identity Provider Security Token Service)
  • 受信任的身份提供者(SharePoint术语)- 又称IP-STS。

  • SharePoint 2010/2013 STS - 使用WIF开发的SharePoint服务应用程序,只充当RP-STS。作为用户可配置的多个可信任身份提供者(IP-STS)的可插入聚合点。如果需要,这些可以使用WIF手动构建。

  • ADFS 2.0 - 专门设计用于对抗活动目录实例的组织联合的Windows角色。 使用WIF构建了一个IP-STS端点。 我对ADFS 2.0的理解是,它不允许您“聚合”其他身份提供者 - 它只允许您对可能不在本地的特定AD实例进行身份验证,并因此需要进行联合以支持SSO。

  • Windows Azure ACS 2.0是一项专门用于联合任何配置的第三方身份提供者(例如Microsoft账户,Google,Facebook,ADFS 2.0)的服务。它作为可插拔的聚合点,用于其他身份提供者,对于这些提供者,它有点像Relying Party。使用WIF构建了一个IP-STS端点进行公开。它汇聚的身份提供者不一定是IP-STS,但ACS 2.0通过使用其内置的IP-STS将所有内容都暴露出来。

  • SharePoint 2010/2013问题:

    我的主要问题是我看到了一些关于ADFS 2.0和SharePoint的文章,几乎读起来就好像你正在用ADFS 2.0替换内置的SharePoint 2010/2013 STS!希望这只是我的阅读问题,但它让我困惑了。

    1. 您真的可以这样做吗?如果你真的想这样做,我认为你需要禁用SharePoint STS并进行大量的手动配置,但我没有看到相关信息。
    2. 为什么要这样做呢?

    2.1. SharePoint STS已经支持作为OOTB可信身份提供者选项的AD身份验证,如果您想使用ADFS 2.0,只需将其添加为可信身份提供者(IP-STS),我看到过博客文章介绍。

    2.2. 基于我对ADFS 2.0的描述,用它替换SharePoint STS实际上会给您带来一个不太灵活的解决方案?

    表述:

    • 您可以配置SharePoint STS以使用ADFS 2.0作为可信身份提供者(IP-STS),也可以使用本地AD。
    • 您可以配置SharePoint STS以使用Windows Azure ACS 2.0作为可信身份提供者(IP-STS)。这将使支持第三方身份验证提供程序变得非常容易,而无需使用WIF开发自己的IP-STS。

    ASP.NET WIF问题:

      我的理解是,为了执行信任协商和声明交换,RP-STS必须与IP-STS通信。这正确吗?
      因此,在构建基于声明的ASP.NET Web应用程序(Relying Party)时,当使用WIF时,您是否需要开发/重用并将RP-STS包含在应用程序中,并配置其与IP-STS具有信任关系?如果不是,是否可以直接从IP-STS使用WIF获取身份验证?
      只写下这些已经帮助我清理思路,但如有不准确/过度简化/完全错误之处,欢迎指正!
      关于此事,
      Michael Taylor
    1个回答

    7
    SP STS是RP-STS,即它没有凭据存储库进行身份验证。这就是为什么您必须将其与ADFS联合起来,ADFS是IP-STS,即它对其域中的AD进行身份验证。
    ADFS可以是RP-STS或IP-STS,例如,您可以有路径- SP应用程序。 -> SP STS -> ADFS(RP) -> ADFS(IP) -> AD。
    您与SP联合的IP-STS不一定是ADFS-它可以是支持WS-Federation协议的任何内容,例如OpenAM,PingIdentity,Azure ACS。主要问题在于链的末端必须有一个凭据存储库进行身份验证。
    此凭据存储库不一定是AD,例如ADFS -> IdentityServer -> SQL Server。
    ADFS可以与许多不同的IP-STS联合。用户可以选择使用哪个进行身份验证。
    ADFS支持SAML2和WS-Fed作为联合协议。 SP RP-STS仅支持WS-Fed。
    ADFS的先前版本(即1.0)是安装在Windows Server 2008上的版本。您必须下载ADFS 2.0。不幸的是,有许多博客文章使用ADFS一词,但是指的是ADFS 1.0。小心-ADFS 1.0是完全不同的。
    WIF只是一组.NET类。它不是STS。您可以进行WIF -> IP-STS或WIF -> RP-STS -> IP-STS等操作。
    希望这回答了您的一些问题,但如果仍然不清楚,请随时提问。
    更新:
    我所知道的唯一集成WIF的STS是ADFS和IdentityServer。上面提到的大多数都是基于Java的。
    选择ADFS而不是IWA的原因是两者都针对AD进行身份验证,但只有ADFS添加了SSO和联合功能。此外,ADFS提供所有基于声明的管道-SAML令牌等。
    当您联合ADFS时,可以提供对多个凭据存储库进行身份验证的能力。但是,如果您选择对ADFS的实例进行身份验证,则会使用AD存储库。安装ADFS时,它会找到其域中的AD实例。那就是它使用的。

    感谢您的帖子。非常有帮助。
    1. 您的意思是您永远不会将SharePoint RP-STS更改为作为STS-RP运行的ADFS 2.0。从不这样做:
    (删除SP STS)SP应用程序-> ADFS(RP-STS)->任何内容始终像这样:SP应用程序-> SP STS-> ADFS / ACS / OpenAM等。这正是我想的。
    1. 您的意思是,像Azure ACS 2.0一样,ADFS 2.0也可以用于与更多IP-STS进行联合吗?如果它不仅处理AD,而是处理Windows,为什么要称其为ADFS? :)
    2. 我知道应避免使用ADFS 1.0,这就是为什么我特别提到了2.0! :)
    - Michael Taylor
    1. WIF只是一组.NET类,而不是一个STS。
    是的,我知道,我只是在问上面的哪个STS是使用WIF代码构建的。我的理解是ADFS 2.0 STS和ACS 2.0 STS都是这样做的。感谢您对WIF-> IP-STS的澄清! WIF-> RP-STS-> IP-STS的好处是什么?非常感谢您的时间!
    - Michael Taylor
    SP STS是RP-STS,也就是它没有凭据库来进行身份验证。这就是为什么您必须将其与ADFS联合起来,ADFS是IP-STS,即它对其域中的AD进行身份验证。但是,“为什么”您会选择使用ADFS 2.0 STS进行身份验证,而不是在基于声明的身份验证下的配置选项中选择Windows身份验证,除非您要走出网络? - Michael Taylor

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