Active Directory およびクレームベース認証

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

クレームベース認証は、ホスト コンピューターに対してユーザーを認証する業界標準のセキュリティ プロトコルです。 クレームベース認証は一連の WS-* 標準で、パッシブ モード (WS-Federation が Microsoft Dynamics 365 (オンラインおよび設置型) Web アプリケーションと共に使用されるとき) またはアクティブ モード (WS-Trust が Windows Communication Foundation (WCF) クライアントと共に使用される場合) のいずれかで、Security Assertion Markup Language (SAML) トークンの使用について説明します。 この認証は WCF と共に動作し、Microsoft Dynamics 365 サーバーを使用する保護されたユーザー認証および通信チャンネルを提供します。Microsoft Dynamics 365 のすべてのエディションでクレームベース認証がサポートされています。

クレームベース認証を行うには、サーバーで実行するセキュリティ トークン サービス (STS) を使用できるようになっている必要があります。 STS サーバーは Active Directory フェデレーション サービス (AD FS) V2、または正式な STS プロトコルを提供する任意のプラットフォームを基にすることができます。 詳細については、Dynamics 365 展開および管理のドキュメントのトピック、TechNet: Microsoft Dynamics CRM 2015 用 IFD の構成 を参照してください。

このトピックの内容

サポートされている認証シナリオ

サポートされていない認証シナリオ

認証クラス

クライアント プロキシ クラスを使用した認証

チャネルの例外およびエラーの処理

セキュリティ (SAML) トークンに関する追加情報

サポートされている認証シナリオ

Microsoft Dynamics 365 は展開の種類ごとに以下の認証シナリオをサポートします。

展開

認証モデル

Microsoft Dynamics 365 (オンライン)

クレームベース認証または Active Directory 認証 (フェデレーションを使用)

設置型 Microsoft Dynamics 365

クレームベース認証または Active Directory 認証

Microsoft Dynamics 365 のインターネットに接続する展開 (IFD)

クレームベース認証または Active Directory 認証

クレームベース認証のしくみ

ユーザー認証の要求は Microsoft Dynamics 365 または Microsoft Dynamics 365 (オンライン)、あるいはカスタム アプリケーションから STS サーバーに送信されます。 STS サーバーはユーザーの認証が必要かどうかを判断し、必要と判断した場合はユーザー認証情報を含む署名され、暗号化された SAML トークンを発行します。 このトークンの存続期間は無限です。アプリケーションがトークンを使用する期間によって異なりますが、定期的に最新の状態に更新する必要があります。 これは、このトピックの後半で詳しく説明されています。

Active Directory 認証のしくみ

ユーザー認証の要求は Microsoft Dynamics 365 またはカスタム アプリケーションから Active Directory に送信されます。 WCF スタックはアプリケーションからの組織サービス呼び出しの認証プロセスを管理し、インターネット インフォメーション サービス (IIS) は Web アプリケーションの認証を管理します。

サポートされていない認証シナリオ

クライアント証明書の使用は Microsoft Dynamics 365 SDK ではサポートされていません。 IIS クライアント証明書を要求するように Microsoft Dynamics 365 webサイトを構成した場合、SDK を使用して作成されたどのアプリケーションでも認証が失敗します。

そのほかのサポートされていないプログラミング方法の詳細については、サポートされていないカスタマイズ を参照してください。

認証クラス

次の表は、SDK で使用できる主認証クラスの一覧を示し、それらのクラスをいつ使用するかを説明し、ほかの関連ドキュメントへのリンクを提供しています。

クラス

使用法

関連ドキュメント

IServiceConfiguration<TService>IServiceManagement<TService>

すべての展開形式: 設置型/IFD、オンライン (Microsoft アカウント および Office 365/MOS*)

マルチスレッド アプリケーションの最良の選択

Microsoft Dynamics 365 (オンライン) Web サービスで Office 365 ユーザーを認証する

サンプル: Microsoft Dynamics 365Web サービスでユーザーを認証する

Améliorer les performances d'allocation des canaux de service

DiscoveryServiceProxyOrganizationServiceProxy

すべての展開形式: 設置型/IFD、オンライン (Microsoft アカウント および Office 365/MOS*)

クライアント プロキシ クラスを使用した認証

サンプル: 探索サービスへのアクセス

Améliorer les performances d'allocation des canaux de service

CrmConnection クラス

すべての展開形式: 設置型/IFD、オンライン (Microsoft アカウント および Office 365/MOS*)

Microsoft Dynamics CRM へのより簡単な接続

サンプル: Microsoft Dynamics 365 を使用した単純化接続のクイック スタート

ServerConnection

すべての展開形式: 設置型/IFD、オンライン (Microsoft アカウント および Office 365/MOS*)

コンソール テスト アプリケーションおよびサンプルコードの使用。

SDK サンプル コード実行時の使いやすさの改善と、認証クラスの使用方法を説明することが目的。 コンソール出力コードが含まれています。

ヘルパー コード: ServerConnection クラス

サンプル: Microsoft Dynamics 365 のクイック スタート

*Microsoft Online Services 環境

クライアント プロキシ クラスを使用した認証

Microsoft Dynamics 365 Web サービスに対する認証の方法の 1 つは、作成するアプリケーションで OrganizationServiceProxy クラスと DiscoveryServiceProxy クラスを使用することです。 これらのクラスの 4 パラメーターのコンストラクターが Microsoft Dynamics 365 (オンラインおよび設置型) の展開をサポートします。 これらのプロキシ クラスはクレーム認証または Active Directory 認証を自動的に処理し、WCF チャネル エンドポイントのリソース制限も管理します。

次のコードは、組織サービス プロキシのインスタンスの作成方法を示しています。

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

次のコードは、探索サービス プロキシのインスタンスの作成方法を示しています。

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

アプリケーションのサービス プロキシ インスタンスは、アプリケーションを終了する前に適切に破棄することが重要です。using ステートメントを使用すると、スコープ外になったサービス プロキシに対して自動的に Dispose が呼び出され、サービス プロキシが適切に破棄されます。 ただし、アプリケーションのパフォーマンスを高めるには、サービス プロキシ インスタンスを破棄してアプリケーション コードの別の場所で必要になったときに再度割り当てるのではなく、サービス プロキシ インスタンスをアプリケーション セッション全体で使用できるように保持しておくことをお勧めします。 サービス チャネルの作成と認証には時間がかかるからです。 この場合は、サービス プロキシ インスタンスの処理が終了したら、アプリケーションを終了する前にそのプロキシに対する Dispose メソッドを直接呼び出す必要があります。

登録されているコンピューティング デバイスのデバイス資格情報は、Microsoft アカウント ID プロバイダによる Microsoft Dynamics 365 (オンライン) での認証時にのみ使用されます。 プロキシ コンストラクター パラメーターの設定方法を示すサンプル コードについては、「サンプル: 探索サービスへのアクセス」を参照してください。

重要

設置型またはインターネットに接続する展開 (IFD) の Microsoft Dynamics 365 環境では、STS サーバーが使用可能な場合、クライアント プロキシ クラスでクレームベース認証が使用されます。 それ以外の場合は Active Directory 認証が使用されます。

コードで Microsoft Dynamics 365 の事前バインド エンティティ型を使用する場合、組織サービス プロキシのインスタンスを作成した後、Web サービス メソッドを呼び出す前に次のコード行を追加する必要があります。

_serviceProxy.EnableProxyTypes()
System_CAPS_security セキュリティ メモ

WCF では、ログオン資格情報が必要な場合にユーザーに対話形式で入力を求める機能をサポートしています。 この機能を有効にするには、ClientCredentials クラスの SupportInteractive プロパティを設定します。 これらの資格情報は、上記のコード スニペットの userCredentials パラメーターで使用されます。

Microsoft Dynamics 365 Web サービスに対する SDK 呼び出しを行うとき、SDK 呼び出しで実行される操作やエンティティ データの変更の実行元が、この WCF 機能によってコードとは無関係に変更されることがあります。

Microsoft Dynamics 365 では、Web サービス呼び出しで指定された資格情報が次のように処理されます。

  • 資格情報を Web サービス呼び出しで指定しない場合、使用する資格情報は WCF スタックで決まります。 この場合、SupportInteractive プロパティの値は自動的に false に設定されます。

  • 資格情報がコードで明示的に提供される場合、現在の SupportInteractive 値が WCF チャネル ファクトリに渡されます。 明示的に変更しない限り、SupportInteractive は既定で true に設定されます。

  • SupportInteractivetrue に設定されている場合、指定された資格情報に誤りがあると、WCF のダイアログ ボックスが表示されることがあります。 そのダイアログ ボックスにユーザーが資格情報を入力すると、アプリケーションで呼び出した Web サービス呼び出しで指定された情報の代わりに、その情報が使用されます。

チャネルの例外およびエラーの処理

コードでは以下の例外とエラーをキャッチする必要があります。 キャッチするその他の例外の一覧については、Microsoft Dynamics 365 SDK の C# のサンプルを参照してください。

詳細については、WCF のエラーおよび例外の処理方法の .NET FrameworkWCF のドキュメント を参照してください。 その他のサンプル コードについては、「サンプルとヘルパー コードの使用」を参照してください。

セキュリティ (SAML) トークンに関する追加情報

ユーザー認証時に使用される SAML トークンを以下に示します。

SAML トークンの内容

XML ベースの SAML 2.0 トークンには特定ユーザーに関する 1 つ以上のクレームを定義する ID が含まれています。 このトークンは ID プロバイダー (STS) サーバーと Microsoft Dynamics 365 の間で受け渡され、クレームベース認証に使用されます。 ID 内のクレームは以下のように定義されています。

クレーム

用途

ユニバーサル プリンシパル名 (UPN)

ターゲット Microsoft Dynamics 365 Server のドメイン\エイリアス形式のユーザーの ID が含まれます。

名前

認証されたユーザーが Microsoft Dynamics 365 の展開管理者でもある場合、このクレームにはターゲット Microsoft Dynamics 365 Server のドメイン\エイリアス形式の展開管理者の ID も含まれます。Windows Identity Foundation は、Name クレームを Identity.name プロパティにマップします。

その他のクレーム

Microsoft Dynamics 365 では使用されません。

サポートされるセキュリティ トークンの種類

Microsoft Dynamics 365 (オンラインおよび設置型) では 2 種類の SAML トークンがサポートされます。

  • Web アプリケーション - Microsoft Dynamics 365 Web アプリケーションは STS からベアラー トークンを受け取ります。 このトークンには必要な情報の一部が不足しているため、WCF エンドポイントにアクセスする際のセキュリティ保護には Transport Layer Security (TLS) または Secure Sockets Layer (SSL) ベースの URL (https://) が使用されます。

  • SDK - カスタム アプリケーションは必要な情報を含む証明キーを持つアクティブ トークンを受け取ります。

セキュリティ トークンのライフサイクル

SecurityToken の存続期間は ValidFrom プロパティと ValidTo プロパティで指定されます。 アプリケーションの設計では、トークンが期限切れになる可能性を考慮する必要があります。その場合は、ExpiredSecurityTokenException が Microsoft Dynamics 365 Web サービスによってスローされて、アプリケーションの次のメッセージ要求が処理されます。

関連項目

チュートリアル: Active Directory に Dynamics 365 アプリを登録する
Microsoft Office 365 および Microsoft Dynamics 365 (オンライン) と接続する
ASPX Web ページまたは IFRAME からのシングル サインオンの実装
サンプル: Microsoft Dynamics 365Web サービスでユーザーを認証する

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権