分享方式:


Active Directory 和宣告型驗證

 

發佈日期: 2016年11月

適用對象: Dynamics CRM 2015

宣告型驗證提供驗證主機使用者的產業標準安全性通訊協定。 宣告型驗證是一組 WS-* 標準,描述 Security Assertion Markup Language (SAML) 權杖的被動模式使用 (當 WS-Federation 用於 Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新 Web 應用程式),或主動模式使用 (其中 WS-Trust 用於 Windows Communication Foundation (WCF) 用戶端)。 此驗證與 WCF 一同運作,提供安全使用者驗證與 Microsoft Dynamics 365 伺服器通訊通道。 所有 Microsoft Dynamics 365 版本都支援宣告型驗證。

宣告型驗證需要 Security Token Service (STS) 在伺服器上執行。 STS 伺服器可以根據 Active Directory Federation Services (AD FS) V2,或提供正式 STS 通訊協定的所有平台。 如需詳細資訊,請參閱《CRM 部署及管理》文件中的以下主題:TechNet:設定 Microsoft Dynamics CRM 2015 的 IFD

本主題內容

支援的驗證案例

不支援的驗證案例

驗證類別

使用用戶端 proxy 類別的驗證

處理通道例外狀況和錯誤

關於安全性 (SAML) 權杖的其他資訊

支援的驗證案例

Microsoft Dynamics 365 支援每個部署類型的下列驗證案例。

部署

驗證模型

Microsoft Dynamics CRM Online

宣告型或 Active Directory (透過同盟) 驗證

Microsoft Dynamics CRM 2015 內部部署

宣告型驗證或 Active Directory 驗證

Microsoft Dynamics CRM 2015網際網路對向部署 (IFD)

宣告型驗證或 Active Directory 驗證

宣告型驗證的運作方式

從 Microsoft Dynamics CRM 2015 或 Microsoft Dynamics CRM Online 或自訂應用程式傳送需要驗證使用者的要求至 STS 伺服器。 STS 伺服器決定使用者是否必須驗證,如果是,則發出包含使用者驗證資訊個的已簽署及加密的 SAML 權杖。 這個權杖擁有受限存留期,也必須依據應用程式使用權杖多久,定期重新整理。 本主題後面更詳盡討論。

Active Directory 驗證的運作方式

從 Microsoft Dynamics 365 或自訂應用程式傳送需要驗證使用者的要求至 Active Directory。 WCF 堆疊管理來自應用程式 Microsoft Dynamics CRM SDK API 呼叫的驗證程序,而 Internet Information Services (IIS) 管理 Web 應用程式的驗證。

不支援的驗證案例

Microsoft Dynamics CRM SDK 不支援用戶端憑證使用。 如果您將 Microsoft Dynamics CRM 網站設定為需要 IIS 用戶端憑證,使用 SDK 建立的所有應用程式都會驗證失敗。

如需其他不支援的程式設計方法的詳細資訊,請參閱 不支援的自訂

驗證類別

下表時列出 SDK 中的主要驗證類別、描述何時使用它們,並提供其他相關文件的連結。

類別

使用方式

相關文件

IServiceConfiguration<TService>IServiceManagement<TService>

所有部署類型:內部部署/IFD、線上 (Microsoft 帳號 和 Office 365/MOS*)

多執行緒應用程式的最佳選擇

向 Microsoft Dynamics CRM Online Web 服務驗證 Office 365 使用者

範例:向 Microsoft Dynamics CRM Web 服務驗證使用者

改善服務管道配置效能

DiscoveryServiceProxyOrganizationServiceProxy

所有部署類型:內部部署/IFD、線上 (Microsoft 帳號 和 Office 365/MOS*)

使用用戶端 proxy 類別的驗證

範例:存取探索服務

改善服務管道配置效能

CrmConnection

所有部署類型:內部部署/IFD、線上 (Microsoft 帳號 和 Office 365/MOS*)

簡化的 Microsoft Dynamics CRM 2015 連線

範例:使用 Microsoft Dynamics CRM 的簡化連線快速入門

ServerConnection

所有部署類型:內部部署/IFD、線上 (Microsoft 帳號 和 Office 365/MOS*)

用於主控台測試應用程式和範例程式碼。

設計在執行 SDK 範例程式碼改善可用性,和示範驗證類別使用。 包含主控台輸出程式碼。

Helper 程式碼:ServerConnection 類別

範例:Microsoft Dynamics CRM 快速入門

*Microsoft Online Services 環境

使用用戶端 proxy 類別的驗證

一種以 Microsoft Dynamics 365 Web 服務驗證的方式是在您撰寫的應用程式中使用 OrganizationServiceProxyDiscoveryServiceProxy 類別。 這些類別的四參數建構函式支援 Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新 部署。 這些 Proxy 類別自動處理宣告或 Active Directory 驗證,以及管理在 WCF 通道端點的資源限制。

下列程式碼顯示如何具現化組織服務 Proxy:

using (OrganizationServiceProxy _serviceProxy =    new OrganizationServiceProxy(organizationUri, homeRealmUri, userCredentials, deviceCredentials))

下列程式碼顯示如何具現化探索服務 Proxy:

using (DiscoveryServiceProxy _discProxy =    new DiscoveryServiceProxy(organizationUri, homeRealmUri, userCredentials, deviceCredentials))

應用程式終止之前,正確處置您的應用程式的服務 Proxy 執行個體是很重要的。using 陳述式會在服務 Proxy 超出範圍時,自動對它呼叫 Dispose,確保服務 Proxy 正確處置。 不過,為了改善應用程式效能,最好作法是在整個應用程式工作階段,保留服務 Proxy 執行個體可在應用程式中使用,而不是處置它並在需要時在應用程式碼其他地方重新配置它。 原因是建立和驗證服務通道是高成本的作業 (在時間上)。 在此情況下,當您完成使用服務 Proxy 執行個體時,必須直接在 Proxy 上呼叫 Dispose 方法,然後終止應用程式。

只在透過 Microsoft 帳號 身分識別提供者以 Microsoft Dynamics CRM Online 驗證時,才能使用已註冊的運算裝置的裝置認證。 對於顯示如何填入 Proxy 建構函式參數的範例程式碼,請參閱 範例:存取探索服務

重要

對於 Microsoft Dynamics CRM 2015 的內部部署或網際網路對向部署 (IFD) 安裝,如果有 STS 伺服器,用戶端 proxy 類別就會使用宣告型驗證。 否則,使用 Active Directory 驗證。

若要在程式碼中使用 Microsoft Dynamics 365 早期繫結實體類型,您必須將下列一行程式碼新增在組織服務 Proxy 具現化之後,但在發出 Web 服務方法呼叫之前:

_serviceProxy.EnableProxyTypes()
System_CAPS_security 安全性 附註

WCF 支援有需要時以互動方式提示使用者輸入登入認證的功能。 設定 ClientCredentials 類別的 SupportInteractive 屬性,啟用此功能。 這些認證是在 userCredentials 參數中使用,如先前程式碼片段所示。

在發出 SDK 呼叫至 Microsoft Dynamics 365 Web 服務時,作業擁有權和 SDK 呼叫執行的實體資料變更可能由此 WCF 功能變更,而與您的程式碼無關。

Microsoft Dynamics 365 處理在 Web 服務呼叫中所提供的認證如下:

  • 如果 Web 服務呼叫中未提供認證,WCF 堆疊決定使用哪些認證。 在這種情況下,SupportInteractive 屬性值會自動設定成 false

  • 如果程式碼明確提供認證,目前 SupportInteractive 值傳遞至 WCF 通道 factory。 根據預設,SupportInteractive 設定為 true,除非您明確變更。

  • 如果 SupportInteractive 設定為 true,並提供的認證失敗,WCF 對話方塊會顯示。 使用者輸入到對話方塊的任何認證會使用,取代由應用程式叫用的 Web 服務呼叫中提供的認證。

處理通道例外狀況和錯誤

您的程式碼應該攔截下列例外狀況和錯誤。 針對其他要攔截的例外狀況清單,請參閱 Microsoft Dynamics CRM SDK 中的 C# 範例:

如需如何處理 WCF 錯誤和例外狀況的詳細資訊,請參閱 .NET FrameworkWCF 文件。 如需其他範例程式法,請參閱使用範例和 Helper 程式碼

關於安全性 (SAML) 權杖的其他資訊

在使用者驗證時使用之 SAML 權杖描述如下。

SAML 權杖的內容

XML 型 SAML 2.0 權杖包含身分識別,定義有關使用者的一個或多個宣告。 此權杖在身分識別提供者 (STS 伺服器) 和 Microsoft Dynamics 365 之間傳送,以進行宣告型驗證。 在身分識別中的宣告如下所定義。

宣告

使用

萬用主體名稱 (UPN)

包含在目標 Microsoft Dynamics 365 伺服器上的使用者識別碼,以網域\別名格式。

名稱

如果已驗證使用者也是 Microsoft Dynamics 365 的部署系統管理員,此宣告包含在目標 Microsoft Dynamics 365 伺服器上的部署系統管理員識別碼,以網域\別名格式。Windows Identity Foundation 將 Name 宣告對應至 Identity.name 屬性。

其他宣告

Microsoft Dynamics 365 未使用。

支援的安全性權杖類型

Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新 支援兩種類型的 SAML 權杖:

  • Web 應用程式 - Microsoft Dynamics 365 Web 應用程式從 STS 接收 bearer 權杖。 此權杖遺失部分必要資訊,因此當您存取 WCF 端點時 安全通訊端層 (SSL) 型 URL (https://) 用於安全性防護。

  • SDK -自訂應用程式接收主動權杖,其中的證明金鑰包含必要資訊。

安全性權杖週期

SecurityToken 的存留期由它的 ValidFromValidTo 屬性所識別。 您的應用程式設計應考慮權杖可能會過期的可能性,導致應用程式正在處理下一個訊息要求時 Microsoft Dynamics 365 Web 服務擲回 ExpiredSecurityTokenException

另請參閱

向 Microsoft Dynamics CRM 2015 Web 服務驗證使用者
與 Microsoft Office 365 及 Microsoft Dynamics CRM Online 連線
簡化的 Microsoft Dynamics CRM 2015 連線
使用 IDiscoveryService web service 為你的組織查看 URL
使用 IOrganizationService Web 服務讀取和寫入資料或中繼資料
在程式碼中使用早期繫結實體類別
範例:建立、擷取、更新和刪除紀錄 (早期繫結)
Helper 程式碼:ServerConnection 類別
Helper 碼:DeviceIdManager 類別
部落格:針對 Windows Phone 和 Windows 8 RT 建立用戶端

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權