SharePoint Oauth和服务器到服务器(S2S)身份验证概述

04/01 07:38
阅读数 79

之前介绍过ADFS 单点登录,这次介绍Oauth的单点登录。有时候坚持OCS 是Oauth 和 S2S的简称。

SharePoint Oauth和服务器到服务器(S2S)身份验证概述(Oauth and server-to-server (S2S) authentication overview)

:感谢 张峰 对错误之处的建议,已经更改

打开授权和服务器到服务器身份验证

开放授权(OAuth)2.0是一种开放的授权标准,是用户获得对资源的有限访问的一种方式; 例如,一个网站,通过使用他们的Microsoft,Google,Facebook或Twitter帐户访问网站,而无需与网站提供商(资源所有者)共享密码。

服务器到服务器(S2S)身份验证使用OAuth协议及其令牌交换系统。在SharePoint中,S2S身份验证允许S2S能够代表用户访问和请求彼此资源的服务器。

用于SharePoint混合功能的S2S身份验证协议与用户身份验证分开。您不应将SharePoint用户的S2Sit混淆为用户登录身份验证协议。

通过了解服务器到服务器身份验证的软件应用程序,可以实现跨服务器资源共享功能。在SharePoint混合中,此跨服务器共享位于本地SharePoint场和SharePoint Online之间。这是云搜索服务应用程序,混合站点功能和混合业务连接服务所必需的。

  • SharePoint 和Oauth 授权流程图:

关于图的解释说明:

1. 用户从 SharePoint 启动 SharePoint add-in。add-in的设计决定完成此步骤的方式。

  •        如果add-in设计为在add-in部件(本质上是关于 IFRAME 的包装程序)中显示远程 Web 应用程序(中 Contoso.com 上),那么启动add-in 就是表示导航到包含add-in 部件的 SharePoint 页面。 (如果用户尚未登录,SharePoint 将提示用户登录。)SharePoint 处理页面并检测到页面上有一个 Contoso.com 应用程序中的组件。 
  • 如果add-in 设计为在浏览器使用完整页面,用户可通过在 SharePoint 网站的“网站内容”**** 页面上选择add-in 磁贴来启动它。 (一种变体是add-in 包含启动远程组件的自定义菜单或功能区项目时的情况。)

2.不论add-in如何启动,SharePoint 必须获取可以发送到 Contoso.com 应用程序的上下文令牌,因此它要求 ACS 创建包含 SharePoint 上下文相关信息的上下文令牌,其中包括当前用户、远程应用程序 URL 和其他信息。 上下文令牌还包含加密刷新令牌。

3.ACS 借助使用 Contoso.com add-in 密码的算法签署上下文令牌,并将其返回到 SharePoint。 只有 ACS 和 Contoso.com add-in 知道密码。

4. 如果在add-in 部件中显示 Contoso.com 应用程序,SharePoint 会呈现托管add-in部件的页面,并将上下文令牌添加到 URL 中,add-in 部件中的 IFRAME 会调用该 URL 来获取其内容。 如果 Contoso.com 应用程序是完整页面,SharePoint 会将浏览器重定向到 Contoso.com,并包括上下文令牌作为重定向响应的一部分。

5.上下文令牌包含在发送给 Contoso.com 服务器的浏览器请求中。

6.Contoso.com 服务器获取上下文令牌并验证签名,它之所以可以这样操作,是因为它知道客户端密码。 这可向 Contoso.com 保证令牌由 ACS 颁发,而不是冒充 SharePoint 的骗子。 Contoso.com 从上下文令牌中提取刷新令牌,并通过请求将允许其访问 SharePoint 的访问令牌的形式,将其与其他信息(包括客户端 ID 和客户端机密)一起发送到 ACS。

7.ACS 验证刷新令牌,确保令牌由 ACS 颁发,然后将访问令牌返回到 Contoso.com。 Contoso.com 可以选择缓存此访问令牌,因此不会在每次访问 SharePoint 时都要求 ACS 提供访问令牌。 默认情况下,访问令牌一次适合缓存几小时。 (截至本文撰写时,ACS 颁发的 SharePoint 访问令牌的默认过期时间为 12 小时,但这可能会更改。)

每个访问令牌仅供在初始授权请求中指定的用户帐户使用,仅授予对该请求中指定的服务(本示例中为 SharePoint)的访问权限。 刷新令牌的有效期更长(截至本文撰写时为六个月),并且也可以缓存。 因此,同一个刷新令牌可以从 ACS 兑换新的访问令牌,直到刷新令牌本身过期。

刷新令牌过期后,Contoso.com 可以通过获取新的上下文令牌来获取新的刷新令牌。

8.Contoso.com 使用访问令牌发出 SharePoint REST API 调用或对 spnv 的 CSOM 请求。 它通过在 HTTP Authorization 标头中传递 OAuth 访问令牌来执行此操作。 (如果远程组件托管在 .NET 平台上,则创建标头的示例代码在 Visual Studio 的 Office 开发人员工具中提供。)
9.SharePoint 验证访问令牌,确保其由 ACS 颁发,然后它将 Contoso.com 请求的数据的发送到 Contoso.com,或执行 Contoso.com 请求的创建、读取、更新或删除 (CRUD) 操作,
10. Contoso.com 应用程序页面在浏览器(或add-in部件的 IFRAME)中显示。

 

配置完成之后,是授权含内部和外部2部分:

授权:规划访问权限

您必须仔细规划对SharePoint混合的访问,包括SharePoint Online访问和SharePoint本地访问。您必须计划哪些用户被视为“混合受众”并相应地分配权限。

作为最佳实践,您应该避免修改默认权限级别,因为它可能会导致访问问题并阻碍Microsoft支持人员协助您的组织。相反,建议组织使用自定义权限级别创建自己的唯一SharePoint组,并根据需要进行编辑。

下图显示SharePoint提供的默认联机权限级别。

许可级别

 

完全控制

完全控制

设计

可以查看,添加,更新,删除,批准和自定义。

编辑

可以添加,编辑和删除列表; 可以查看,添加,更新和删除列表项和文档。

有助于

可以查看,添加,更新和删除列表项和文档。

可以查看页面和列表项以及下载文档。

限制访问

在给定权限时可以查看特定列表,文档库,列表项,文件夹或文档。

创建新的子网站

可以创建新的子网站。

只读

可以查看页面,列表项和文档。具有服务器端文件处理程序的文档类型可以在浏览器中查看,但不能下载。

 

内部的安全组

SharePoint Online具有为您预先创建的以下安全组:

  • 成员。编辑权限。
  • 拥有者。完全控制。
  • 游客。阅读权限。

预配置的安全级别

以下是SharePoint Online中预配置的对象(或级别),您应在授权计划中考虑这些对象(或级别):

COMPANY ADMINISTRATOR.
By default, all Office 365 global administrators are members of the Company Administrators role and is a site collection administrator of the primary root site collection in SharePoint Online. I recommend against modifying membership of Company Administrators because it can lead to unexpected consequences.

Claims encoding example: c:0-.f|rolemanager|{SID}

EVERYONE EXCEPT EXTERNAL USERS.


By default, all users, when synchronized to Office 365, are automatically members of the Everyone Except External Users group. By default, the Everyone Except External Users group is added to the Members group on the SharePoint Team Site that has the contribute permission level. By default, all licensed users added to Office 365 are able to view, add, update, and delete items from lists and libraries. If you want to change the permission levels for this group, you can remove it from the Members group and then add it to a group that uses different permissions. For example, you might add the Everyone Except External Users to the SharePoint Visitors group (read permissions). 

Claims encoding example: c:0-.f|rolemanager|spo-grid-all-users/{GUID}

EVERYONE.


This is the All Authenticated Users group that is preset in SharePoint Online. I recommend against altering this in any way because it can cause unexpected results.

Claims encoding example: c:0(.s|true

 

规划管理员

您应该计划为技术管理目的留出专用的全局管理员帐户,例如为SharePoint混合配置目录同步和联合服务。建议此帐户使用默认域(带.onmicrosoft.com)地址。例如,Contoso的默认域名为contoso.onmicrosoft.com,其全局管理员帐户为HybridAdmin@contoso.onmicrosoft.com。

授权 - 外部用户

外部用户是组织外部用户从外部访问SharePoint的用户。这些可能是您与之合作的业务合作伙伴组织,供应商,客户和客户。外部协作者不需要Office 365许可证。

外部共享通过SharePoint管理中心进行管理。您可以在SharePoint管理中心中选择以下共享选项之一,以定义组织可用的共享功能级别:

  • 不允许在组织外部进行共享。

    此选项可阻止所有站点上的所有用户与外部用户共享站点或共享站点上的内容。
     


  • 仅允许与组织目录中已存在的外部用户共享。 
     
  • 允许接受共享邀请的外部用户并以经过身份验证的用户身份登录。

    此选项要求已收到邀请的外部用户在可以访问内容之前使用Microsoft帐户登录以查看网站或内容。
     


  • 允许与所有外部用户共享并使用匿名访问链接。

    这是SharePoint Online中的默认设置。此选项允许站点用户与登录为经过身份验证的用户的人共享站点,但您还希望允许站点用户通过使用匿名访客链接来共享文档,这些链接不需要受邀收件人登录。

导入外部用户

Azure AD B2B协作的预览版本需要CSV文件,指定要通过Azure AD门户上载的合作伙伴用户信息。CSV文件应包含所需标签以及组织所需的任何可选字段。Microsoft提供了一个示例CSV文件,可以根据组织的需要进行修改。但是,您不应更改第一行中标签的拼写。

CSV文件中的第一行标签包含每个列名称(例如Email,DisplayName等)。此行是成功解析CSV文件所必需的。每个列名的拼写必须与以下列表中指定的字段匹配。对于不需要的可选字段,可以从CSV文件中删除其标签,并且可以将整个列留空。

CSV文件中需要以下字段:

InvitationText.

Customize invitation email text after app branding and before the redemption link.

InvitedToApplications.

AppIDs of corporate applications to assign users.
AppIDs are retrievable in PowerShell by calling Get-MsolServicePrincipal | fl DisplayName, AppPrincipalId

InvitedToGroups.

ObjectIDs for groups to add user to.
ObjectIDs are retrievable in PowerShell by calling Get-MsolGroup | fl DisplayName, ObjectId

InviteRedirectURL.

URL to direct an invited user after invite acceptance. This should be a company-specific URL (such as contoso.my.salesforce.com). If this optional field is not specified, the invited user is directed to the App Access Panel where they can navigate to your chosen corporate apps. The App Access Panel URL is of the form https://account.activedirectory.windowsazure.com/applications/default.aspx?tenantId=.

CcEmailAddress.

Email address to copy emailed invitation. If the CcEmailAddress field is used, this invitation cannot be used for email-verified user or tenant creation.

Everyone.

Language for invitation email and redemption experience, with "en" (English) as the default when unspecified. The other supported language codes include:

  • de: German
  • es: Spanish
  • fr: French
  • it: Italian
  • ja: Japanese
  • ko: Korean
  • pt-BR: Portuguese (Brazil)
  • ru: Russian
  • zh-HANS: Simplified Chinese
  • zh-HANT: Traditional Chinese
发布了397 篇原创文章 · 获赞 102 · 访问量 121万+
展开阅读全文
h2
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部