認証方法

完了

Dataverse ServiceClient を使用する際、Dataverse 環境に対する認証を処理する 2 つの主要な方法があります。 1 つ目のオプションは、ServiceClient が組み込み機能により Microsoft 認証ライブラリ (MSAL) を使用して、認証を処理するというものです。 この方法を使用すると、ServiceClient が認証プロセスを内部で管理します。 もう 1 つのオプションは、完全なカスタムの認証方法で、ServiceClient が OAuth アクセス トークンを取得するために呼び出す機能をあなたが提供します。 このオプションを使用する場合、認証プロセスのすべての側面について、あなたが責任を負うことになります。

ServiceClient の組み込み認証の使用

どの認証方法を使用するかは、ServiceClient で使用するコンストラクターによって決まります。 一般的なのは、アプリケーション コンフィギュレーションまたは Azure Key Vault から取得した接続文字列を使用する方法です。 接続文字列を使用したくない場合、ServiceClient には、接続文字列オプションの一部をパラメータとして使用するその他のオプションがあります。 これらすべてのオプションにより、ServiceClient は自身の組み込み認証機能を使用できます。 この方法を使用して処理できる認証シナリオの一部を次に示します。

  • UX で Microsoft 365 の指定したアカウントを使用して認証を求める OAuth

  • フォールバック UX で現在ログインしているユーザーを使用して認証を求める OAuth

  • 証明書ベースの認証

  • ClientId および ClientSecret に基づく認証

ClientId および ClientSecret に基づく認証の接続文字列の例を以下に示します。

<add name="MyDataverse"
  connectionString="
  AuthType=ClientSecret;
  url=https://contosotest.crm.dynamics.com;
  ClientId={AppId};
  ClientSecret={ClientSecret}"
  />

他のオプションの例については、接続文字列に関するドキュメントをご確認ください。

ServiceClient のカスタム認証の使用

カスタム認証を使用することで、トークンの取得を制御できます。 ユーザー認証のフローの代わりに実装する必要がある Web アプリケーションまたはアプリケーションを使用する場合、通常はこの方法を使用することをお勧めします。 この方法を使用するには、Dataverse にアクセスするためのアクセス トークンが必要な場合に ServiceClient が呼び出す機能を指定する必要があります 。 この関数は単一のパラメーター、すなわち instanceUrl を受け取ります。また、文字列アクセス トークンを返す必要があります。

カスタム認証の使用例を次に示します。

Uri instanceUrl = new Uri("https://YourEnvironmentName.crm.dynamics.com");

ServiceClient serviceClient = new ServiceClient(
    instanceUrl,
    MyTokenProvider,
    useUniqueInstance: true
);

上の例で MyTokenProvider は、トークンを取得および返すのに必要なロジックが必要です。

トークンを取得するロジックを除いたこの関数の例を次に示します。

static async Task<string> MyTokenProvider(string instanceUrl)
{
    // Your logic to get the token

    return ">TheToken>";
}

使用できる状態かどうかを確認する

ServiceClient のインスタンスを使用する前に、IsReady プロパティをチェックすることで、使用できる状態かどうかを確認できます。 true の場合、Dataverse サービスは要求を受け入れる準備ができています。 false の場合、発生した問題に関する詳細は LastError プロパティおよび LastException プロパティにより確認できます。