Microsoft Dataverse で Office365 認証を使用する
重要
Microsoft Dataverse に接続している際の WS-Trust (Office365) 認証セキュリティ プロトコルの使用は、非推奨になりました。詳しくは、お知らせ をご覧ください。
さらに、WS-Trust プロトコルは、顧客データに対する多要素認証および Microsoft Entra ID の条件付きアクセス制御の最新形式には対応していません。
このドキュメントでは、"Office365" 認証と OrganizationServiceProxy、ServiceClient、または 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
クラス コンストラクターに置き換えることをお勧めします。 ここではコーディングのパターンを変更する必要がありますが、単純化するために、CrmServiceClient
とServiceClient
は複雑なコンストラクターや外部認証ハンドラーを提供する機能に加えて接続文字列にも対応しています。 サービス クライアント クラスはIOrganizationService
を実装します。したがって、新しい認証コードをアプリケーション コードの残りの部分に移植することができます。 サービス クライアント クラスの使用例については、PowerApps-サンプル リポジトリにて確認できます。コードが “Office365” の認証タイプに ServiceClient や CrmServiceClient クラスを使用している場合:
この例で使用しているのは、次のような接続文字列です。
connectionString = "AuthType=Office365;Username=jsmith@contoso.onmicrosoft.com;Password=passcode;Url=https://contoso.crm.dynamics.com"
同様に、
CrmServiceClient
やServiceClient
コンストラクターを使用して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 分かかります。 個人データは収集されません (プライバシー ステートメント)。