SharePoint 2013 中的 OAuth 与解除冻结的用户 – 如何解除冻结?我需掌握哪些信息?
原文发布于 2012 年 8 月 16 日(星期四)
首先,我想说的是,我为何喜欢撰写有关 SharePoint 神秘功能的博客文章,其原因之一在于我完全可以使用通俗语言,就像我的博客标题一样。除非重新创建 SharePoint 的新版本,否则有些东西你很难摆脱它的约束。大家在 SharePoint 2013 中看到了轻松有趣的社交消息吗?例如“非常抱歉让您等了这么久,我终于忙完了”这样的话语。如今,我发现用我的朋友 Tom 几天前获得的 HRESULT 等功能进行点缀,它变得更有趣了。嗯…变化越大,共性越多。
但现在,我们先言归正传。在讨论新 SharePoint 2013 的某些功能时,我曾在此博客中提到过一两次 oAuth。由于我们整个作者团队都在深入浅出地阐述“oAuth 是什么”,因此我不想在此多费口舌,我仅对 oAuth 的某些使用方式稍加补充说明。OAuth 信任的最佳示例可能是用于搜索的远程 SharePoint 索引功能。此功能允许某个场的用户发起路由至另一个 SharePoint 场的查询,而且能在该远程 SharePoint 场中重构用户的身份,以便搜索结果能够进行安全修整。此外,此功能还可用于其他场景,例如:新应用程序模型(即:此用户是否有权访问应用程序正在请求的内容)、SharePoint 和 Exchange 等服务器应用程序(此用户是否有权访问邮箱内容)之间的通信以及其他场合。我想,远程 SharePoint 索引功能就是一个很好的示例,因为它也许是用来规划我们必须完成哪些任务才能使所有工作按预期进行的最佳场景。
我们先来了解一下 FarmA 如何能够“创建一个与 FarmB 中类似的“Steve”。好的,我们先从用户配置文件应用程序开始讲起。假设 Steve 位于 FarmB 中且发出查询。该查询以及附带 Steve 属性的查询将发送到 FarmA。默认情况下,这些属性是指 Steve 的 SMTP 地址、SIP 地址、帐户名称以及名称标识符。FarmA 收到该请求之后,第一件事是查找其本地用户配置应用程序。它将查找与发送过来的 Steve 值匹配的配置文件。正因为如此,确保 UPA 正常运行并已填充至 SharePoint 2013 显得至关重要。有关如何操作的详细信息,我另外撰写了一篇博客,网址为:https://blogs.msdn.com/b/sharepoint_chs/archive/2012/09/20/sharepoint-2013-ad-saml.aspx。
好的,现在 FarmA 已找到 Steve 用户配置文件。接下来怎么办?嗯,答案是“视具体情况而定”。因此,为企业制定此任务计划显得非常重要。这里的“具体情况”是指您使用的身份验证类型,如下所示:
- Windows 声明 – 如果使用 Windows 声明,则您所需的绝大部分信息都在用户配置文件中。它包括您的帐户名称以及 AD 组成员关系。稍后,我将详细解释“绝大部分”的具体含义。但提前说一句,如果使用 Windows 声明,操作将会简便得多。
- 基于表单的身份验证声明 – 如果使用 FBA,则还需解决几个问题。首先,您必须找到一种填充 UPA 并使其保持最新版本的方法。如果同时使用 FBA 和 LDAP 提供程序,且您的目录实际上是 Windows Active Directory,则表明一切会正常运转。您可以创建指向 Active Directory 的配置文件连接,然后采用我在以上链接博客中所述的类似方式将其与 FBA 提供程序关联。尽管大部分情况下,AD 并不是您的提供程序(这意味着您必须编写一些自定义代码来填充 UPA),但这足以让您获得我们真正关心的 FBA 用户的唯一属性“帐户名称”。正如各位所知道的那样,相对于“绝大部分”(我略加补充一下)信息来说,其余部分的信息是指来自角色提供程序的数据。嗯,真正酷的事情是,当我们解除 FBA 用户的冻结时,我们还会调用关联的角色提供程序,就像在本地登录的 FBA 用户一样。因此,我们能获取 FBA 用户的所有角色声明。
- SAML 声明 – 这与 FBA 十分类似,首先您必须填充 UPA。如果运气不错,您的用户正好位于 AD 中,则仅需遵照上述链接博客中所述直接导入用户即可。如果运气欠佳,则需找到有效方法连接至源目录,然后从源目录中导入用户。使用 SAML 声明的方法可能最错综复杂,这是因为它可能牵涉到一至多个目录,但其中任何一个目录都不归您所有(也就是说,您可能拥有与 ACS 建立联盟并使用 Facebook 或其他提供程序的合作伙伴等)。如果事实确实如此,且您需要所有这些“零件”正常运转,则必须找到填充 UPA 的方法。更重要的一点是,当您以 SAML 用户身份登录时,您将从身份提供程序 (IdP) 中获得一系列声明。此用户解除冻结流程无法模拟这种登录。事实上,这就是 SAML 的性质。嗯,您可以进行一次或多次重新定向,并随心提供任意数量的身份验证提示和身份验证类型(如双重因素的身份验证)。这对您来说意味着什么?如果需要使用声明来保护内容、并通过此用户解除冻结流程授予访问该内容的权限,则确实需要通过声明补充方式来添加声明。事实上,您在解除冻结期间无法从 IdP 中获取声明,因此如果您需要这些声明,请在本地授予其权限。这就是我在上文中提到的“绝大部分”信息的含义,下面我将进行解释。
- “绝大部分”的含义是什么?我希望答案会逐渐变得明朗。无论您是 Windows 用户,还是 FBA 用户或 SAML 用户,除了从身份验证提供程序中获得的声明以外,您还可通过补充方式来添加其他声明:https://blogs.technet.com/b/speschka/archive/2010/03/13/writing-a-custom-claims-provider-for-sharepoint-2010-part-1.aspx(该链接可能指向英文页面)此外,在解除冻结的过程中,我们还会调用所有已注册的自定义声明提供程序,以便能同时获取已解除冻结用户接收到的任何其他声明(如果他们已在本地登录,且已调用这些提供程序)。
正因为如此,我才会如此钟爱远程 SharePoint 索引场景,并在此博客中详细阐述它所需的规划事项。现在,您可如愿以偿地一个场内根据 Windows 组、FBA 用户、SAML 用户或任何通过补充方式添加的声明向内容授予权限。如果您在查询内容时未拥有这些声明,则该内容将会安全修整,导致您无法看到。由此可见,在本地登录时向每个声明授予权限是多么重要,同时它对于版本解除冻结也十分重要。
事实上,有许多潜在规划也能对您有所帮助。我真诚地希望这篇博客能够帮助您找出主要的动态因素,帮助您抓住重点。
这是一篇本地化的博客文章。请访问 OAuth and the Rehydrated User in SharePoint 2013 – How’d They do That and What do I Need to Know 以查看原文。