Microsoft Dataverse で Office365 認証を使用する

重要

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

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

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

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

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

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

    • CrmServiceClient または ServiceClient クラスを接続文字列で使用する場合:

      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 を変更してアプリケーションを最新の状態に維持します。

  • コードで OrganizationServiceProxy インスタンスを使用する場合:

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

    コンストラクターを呼び出すときは、OrganizationServiceProxy クラス コンストラクターのすべての使用を CrmServiceClient または ServiceClient クラス コンストラクターに置き換えることをお勧めします。 ここではコーディングのパターンを変更する必要がありますが、単純化するために、CrmServiceClientServiceClient は複雑なコンストラクターや外部認証ハンドラーを提供する機能に加えて接続文字列にも対応しています。 サービス クライアント クラスは IOrganizationService を実装します。したがって、新しい認証コードをアプリケーション コードの残りの部分に移植することができます。 サービス クライアント クラスの使用例については、PowerApps-サンプル リポジトリにて確認できます。

  • コードが “Office365” の認証タイプに ServiceClientCrmServiceClient クラスを使用している場合:

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

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

    同様に、CrmServiceClientServiceClient コンストラクターを使用して 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 は、実動アプリケーションの登録値の例です。 これらの値は、オンライン サービスが展開されているすべての場所で機能します。 ただし、ここでは例として提供しているものであるため、テナントで実行されているアプリケーションに対しては、Microsoft Entra ID で 独自のアプリケーション登録を作成する ことを推奨します。 Azure アプリの登録時に取得した RedirectUri と AppId と一緒に、接続文字列で、ユーザー名、パスワード、Dataverse 環境 URL 値を使用します。

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

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

重要

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

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

ヘルプが必要な場合

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

関連項目

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

注意

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

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