Microsoft Dataverse で Office365 認証を使用する

重要

Microsoft Dataverse に接続している際の WS-Trust (Office365) 認証セキュリティ プロトコルの使用は、非推奨になりました。詳しくは、お知らせ をご覧ください。

さらに、WS-Trust プロトコルは、顧客データに対する多要素認証および Azure AD の条件付きアクセス制御の最新形式には対応していません。

このドキュメントでは、"Office365" 認証、および Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy または Microsoft.Xrm.Tooling.Connector.CrmServiceClient クラスを使用するカスタム クライアント アプリケーションへの影響と必要な認証コードの変更について説明します。 アプリケーションでこのタイプの認証プロトコルと API を使用している場合は、以下の説明をお読みの上で、アプリケーションのコードに推奨される認証の変更についてご確認ください。

コードやアプリケーションが WS-Trust を使用しているかどうかを確認するにはどうすればよいですか?

最も重要なことは、この変更が Microsoft Dataverse に接続するクライアント アプリケーション のみ に影響を与えるという点です。 カスタム プラグイン、ワークフロー アクティビティ、オンプレミス / IFDサービスの接続には影響しません。

  • Dataverse またはアプリケーションでの認証にユーザー アカウントとパスワードの認証情報を使用しているコードの場合、WS-Trust セキュリティ プロトコルを使用している可能性が高いです。 以下にいくつかの例を示しますが、この一覧にすべてが網羅されているわけではありません。

    • CrmServiceClientクラスを接続文字列で使用している場合。

      connectionString="AuthType=Office365; Username=jsmith\@contoso.onmicrosoft.com;Password=passcode;Url=https://contoso.crm.dynamics.com"

    • OrganizationServiceProxy クラスのコンストラクターを使用している場合。

using (OrganizationServiceProxy organizationServiceProxy =
    new OrganizationServiceProxy(serviceManagement, clientCredentials)
{ ... }
  • コードが OrganizationServiceProxy クラスを使用している場合、WS-Trust を使用しています。

  • コードが CrmServiceClient.OrganizationServiceProxy を使用している場合、WS-Trust を使用しています。

この影響を受けた場合、アプリケーションのコードを修正するにはどうすればよいですか。

非常に簡単な手順をご用意していますので、これに従ってアプリケーションのコードを変更し、推奨される接続インターフェイスを使用して Dataverse との認証をしてください。

重要

可能な場合は、利用可能な最新の NuGet パッケージをダウンロードして使用することにより、最新のクライアント SDK API を変更してアプリケーションを最新の状態に維持します。

  • コードで Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy インスタンスを使用している場合。

    OrganizationServiceProxy のインスタンスをさまざまなメソッドに渡したり、メソッドからインスタンスを返したりする場合は、OrganizationServiceProxy 型のすべての発生箇所を IOrganizationService インターフェースに置き換えてください。 このインターフェースは、Dataverse との通信に使用されるすべてのコアメソッドを公開します。

    コンストラクターを呼び出す際には、プロジェクトに NuGet パッケージの Microsoft.CrmSdk.XrmTooling.CoreAssembly を追加し、すべての OrganizationServiceProxy コンストラクターとCrmServiceClient クラスのコンストラクターを上書きすることを推奨します。 ここではコーディングのパターンを変更する必要がありますが、単純化をする目的で CrmServiceClient は複雑なコンストラクターや外部認証ハンドラーを提供する機能に加えて接続文字列にも対応しています。 CrmServiceClientIOrganizationService を実装します。したがって、新しい認証コードをアプリケーション コードの残りの部分に移植することができます。 CrmServiceClient の使用例については、 PowerApps-Samples リポジトリにて確認できます。

  • コードが 「Office365」 の認証タイプに CrmServiceClient を使用している場合 :

    この例で使用しているのは、次のような接続文字列です。

    connectionString = "AuthType=Office365;Username=jsmith@contoso.onmicrosoft.com;Password=passcode;Url=https://contoso.crm.dynamics.com"

    同様に、CrmServiceClient コンストラクターを使用して AuthType.Office365 に渡すこともできます。

    • OAuth ベースの接続文字列の使用へと切り替えます。 このような接続文字列は次のようになります。

      connectionString = "AuthType=OAuth;Username=jsmith@contoso.onmicrosoft.com; Password=passcode;Url=https://contosotest.crm.dynamics.com;AppId=51f81489-12ee-4a9e-aaae-a2591f45987d; RedirectUri=app://58145B91-0C36-4500-8554-080854F2AC97;LoginPrompt=Auto"

      これが一番早くコードを更新する方法となります。 LoginPrompt を「never」に設定して、Office365 の動作をシミュレートできることに注意してください。

      上記の AppId および RedirectUri は、実動アプリケーションの登録値の例です。 これらの値は、オンライン サービスが展開されているすべての場所で機能します。 ただし、ここでは例として提供しているものであるため、テナントで実行されているアプリケーションに対しては、Azure Active Directory (Azure AD) で 独自のアプリケーション登録を作成する ことを推奨します。 Azure アプリの登録時に取得した RedirectUri と AppId と一緒に、接続文字列で、ユーザー名、パスワード、Dataverse 環境 URL 値を使用します。

  • CrmServiceClient.OrganizationServiceProxy にアクセスしている場合 プロパティ:

    ご利用のコード内にて、当該プロパティの使用をすべて停止します。 CrmServiceClient は、 IOrganizationService の実装を行い、組織のサービス プロキシに設定可能なすべてを公開します。

重要

OAuth を使用しても、ユーザーID / パスワードを使用してログインできない場合:テナントとユーザーが Azure Active Directory で設定されていて、条件付きアクセスを使用している。かつ/または多要素認証が必要となっている場合、ユーザーID /パスワードのフローを非対話形式で使用することはできません。 このような状況では、サービス プリンシパルユ ーザーを使用して Dataverse で認証する必要があります。

これを行うには、Azure Active Directory で最初にアプリケーションユーザー(サービスプリンシパル)を登録する必要があります。 この方法については、こちらを参照してください。 アプリケーションの登録時に、Dataverse でそのユーザーを作成し、アクセス許可を付与する必要があります。 これらのアクセス許可は、Dataverse でアクセス許可が付与されているチームにアプリケーション ユーザーを追加することにより、直接または間接的に付与できます。 Dataverse で、ライセンスのない "アプリケーション ユーザー" を設定して認証する方法の詳細については、こちら をご覧ください。

ヘルプが必要な場合

Power Apps ALM と ProDev のコミュニティ フォーラム を継続して監視します。 さまざまな問題の解決方法については、こちらをご確認頂くか、質問を投稿してください。

関連項目

XRMツールの接続文字列を使用して Microsoft Dataverseに接続する

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。