天天看點

SharePoint Oauth和伺服器到伺服器(S2S)身份驗證概述

之前介紹過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 授權流程圖:
SharePoint Oauth和伺服器到伺服器(S2S)身份驗證概述

關于圖的解釋說明:

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,其全局管理者帳戶為[email protected]。

授權 - 外部使用者

外部使用者是組織外部使用者從外部通路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

繼續閱讀