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 |
すべての展開形式: 設置型/IFD、オンライン (Microsoft アカウント および Office 365/MOS*) |
クライアント プロキシ クラスを使用した認証 Améliorer les performances d'allocation des canaux de service |
|
すべての展開形式: 設置型/IFD、オンライン (Microsoft アカウント および Office 365/MOS*) |
||
ServerConnection |
すべての展開形式: 設置型/IFD、オンライン (Microsoft アカウント および Office 365/MOS*) コンソール テスト アプリケーションおよびサンプルコードの使用。 SDK サンプル コード実行時の使いやすさの改善と、認証クラスの使用方法を説明することが目的。 コンソール出力コードが含まれています。 |
*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()
![]() |
---|
WCF では、ログオン資格情報が必要な場合にユーザーに対話形式で入力を求める機能をサポートしています。 この機能を有効にするには、ClientCredentials クラスの SupportInteractive プロパティを設定します。 これらの資格情報は、上記のコード スニペットの userCredentials パラメーターで使用されます。 Microsoft Dynamics 365 Web サービスに対する SDK 呼び出しを行うとき、SDK 呼び出しで実行される操作やエンティティ データの変更の実行元が、この WCF 機能によってコードとは無関係に変更されることがあります。 Microsoft Dynamics 365 では、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. 著作権