10

全部,

我一直在围绕基于声明的身份验证进行大量阅读,但仍然有些困惑。我试图巩固我的理解,特别是与 SharePoint 2010/2013 相关,但也普遍(即 ASP.NET)。

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

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

  • 信赖方 - 声明的“消费者”(即 SharePoint、ASP.NET 网站等)。声明通过 STS(仅 IP-STS?)提供。

  • STS(安全令牌服务)- 一种发布安全令牌的专用 Web 服务。有两种口味,有些 STS 可能同时是两种口味?

    • RP-STS(依赖方安全令牌服务)
    • IP-STS(身份提供商安全令牌服务)
  • 受信任的身份提供者(SharePoint 术语)-AKA。IP-STS。

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

  • ADFS 2.0 - 一个 Windows 角色,专门设计用于仅针对 Active Directory 实例联合组织。公开使用 WIF 构建的 IP-STS 端点。我对 ADFS 2.0 的理解是它不允许您“聚合”其他身份提供程序 - 它只允许您针对可能不是本地的特定 AD 实例进行身份验证,因此需要联合以支持 SSO .

  • Windows Azure ACS 2.0 - 一种专门用于联合任何已配置的第三方身份提供程序(即 Microsoft 帐户、Google、Facebook、ADFS 2.0)的服务。作为其他身份提供者的可插入聚合点,它的行为有点像依赖方。公开使用 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 已经支持 AD 身份验证作为 OOTB 受信任的身份提供程序选项,如果您想改用 ADFS 2.0,您可以将其添加为受信任的身份提供程序 (IP-STS),我已经看过博客文章。

2.2. 根据我对 ADFS 2.0 的描述,将其更改为 SharePoint STS 实际上会给您一个不太灵活的解决方案吗?

声明:

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

ASP.NET WIF 问题:

  1. 我的理解是,为了执行信任协商和声明交换,RP-STS 必须与 IP-STS 对话。它是否正确?
  2. 因此,在使用 WIF 构建基于声明的 ASP.NET Web 应用程序(依赖方)的上下文中,您是否会因此开发/重用并将 RP-STS 包含到应用程序中,并将其配置为与 IP 建立信任关系- STS?如果不能,您可以使用 WIF 直接从 IP-STS 获取身份吗?

只是写这篇文章就帮助我摆脱了这个想法,但是任何关于不准确/过于简单化/完全不真实的帮助将不胜感激!

问候,

迈克尔·泰勒

4

1 回答 1

7

SP STS 是一个 RP-STS,即它没有用于认证的凭证存储。这就是为什么您必须将它与作为 IP-STS 的 ADFS 联合起来,即它针对其域中的 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 实例。那就是它使用的那个。

于 2013-01-10T18:27:14.507 回答