クライアント アプリケーションを初期化する

完了

MSAL.NET 3.x でアプリケーションをインスタンス化するには、アプリケーション ビルダー PublicClientApplicationBuilder および ConfidentialClientApplicationBuilder を使用することをお勧めします。 これらは、コードまたは構成ファイルから、または両方のアプローチを組み合わせることで、アプリケーションを構成する強力なメカニズムを提供します。

アプリケーションを初期化する前に、まず、そのアプリケーションを登録して、Microsoft ID プラットフォームに統合できるようにする必要があります。 登録後に、次の情報が必要な場合があります (Azure portal で検索できます)。

  • クライアント ID (GUID を表す文字列)
  • ID プロバイダーの URL (名前付きインスタンス) とアプリケーションのサインイン対象ユーザー。 これら 2 つのパラメーターは機関と総称されます。
  • 組織専用の基幹業務アプリケーション (名前付きシングル テナント アプリケーションとも呼ばれます) を作成している場合はテナント ID。
  • アプリケーション シークレット (クライアント シークレット文字列) または機密クライアント アプリの場合は (X509Certificate2 種類の) 証明書。
  • Web アプリ、および場合によってはパブリック クライアント アプリの場合 (特に、アプリでブローカーを使用する必要がある場合)、redirectUri も設定します。ここでは、セキュリティ トークンを使用して ID プロバイダーによってアプリケーションに接続されます。

コードからのパブリックおよび機密クライアント アプリケーションの初期化

以下のコードでは、パブリック クライアント アプリケーションをインスタンス化して、職場および学校のアカウントまたは個人の Microsoft アカウントを使用して、Microsoft Azure のパブリック クラウドにユーザーをサインインさせます。

IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId).Build();

同じ方法で、次のコードは、Microsoft Azure パブリック クラウド内のユーザーからのトークンをユーザーの職場および学校のアカウントを使用して、または個人の Microsoft アカウントを使用して処理することで、機密性の高いアプリケーション (https://myapp.azurewebsites.net にある Web アプリ) をインスタンス化します。 アプリケーションは、クライアント シークレットを共有することで、ID プロバイダーで識別されます。

string redirectUri = "https://myapp.azurewebsites.net";
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
    .WithClientSecret(clientSecret)
    .WithRedirectUri(redirectUri )
    .Build();

ビルダー修飾子

アプリケーション ビルダーを使用するコード スニペットでは、.With メソッドを修飾子として適用できます (例: .WithAuthority および .WithRedirectUri)。

  • .WithAuthority 修飾子:.WithAuthority 修飾子はアプリケーションの既定のオーソリティを Microsoft Entra オーソリティに設定し、Azure クラウド、対象ユーザー、テナント (テナント ID またはドメイン名) を選択するか、オーソリティ URI を直接提供する可能性があります。

    var clientApp = PublicClientApplicationBuilder.Create(client_id)
        .WithAuthority(AzureCloudInstance.AzurePublic, tenant_id)
        .Build();
    
  • .WithRedirectUri 修飾子: .WithRedirectUri 修飾子では、既定のリダイレクト URI をオーバーライドします。

    var clientApp = PublicClientApplicationBuilder.Create(client_id)
        .WithAuthority(AzureCloudInstance.AzurePublic, tenant_id)
        .WithRedirectUri("http://localhost")
        .Build();
    

パブリック クライアント アプリケーションと機密性の高いクライアント アプリケーションに共通の修飾子

次の表は、パブリックまたは機密クライアントで設定できるいくつかの修飾子を示しています。

修飾子 説明
.WithAuthority() アプリケーションの既定のオーソリティを Microsoft Entra オーソリティに設定し、Azure クラウド、オーディエンス、テナント (テナント ID またはドメイン名) を選択するか、オーソリティ URI を直接提供する可能性があります。
.WithTenantId(string tenantId) テナント ID、またはテナントの説明をオーバーライドします。
.WithClientId(string) クライアント ID をオーバーライドします。
.WithRedirectUri(string redirectUri) 既定のリダイレクト URI をオーバーライドします。 これは、ブローカーを必要とするシナリオで役立ちます。
.WithComponent(string) MSAL.NET を使用して、ライブラリの名前を設定します (テレメトリの理由のため)。
.WithDebugLoggingCallback() 呼び出されると、アプリケーションによって Debug.Write が呼び出され、デバッグ トレースが有効になります。
.WithLogging() 呼び出されると、アプリケーションによって、デバッグ トレースを使用してコールバックが呼び出されます。
.WithTelemetry(TelemetryCallback telemetryCallback) テレメトリを送信するために使用するデリゲートを設定します。

機密性の高いクライアント アプリケーションに固有の修飾子

機密性の高いクライアント アプリケーション ビルダーに設定できる修飾子は次のとおりです。

修飾子 説明
.WithCertificate(X509Certificate2 certificate) Microsoft Entra ID を使用してアプリケーションを識別する証明書を設定します。
.WithClientSecret(string clientSecret) Microsoft Entra ID を使用してアプリケーションを識別するクライアント シークレット (アプリのパスワード) を設定します。