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

完了

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

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

  • アプリケーション (クライアント) ID - GUID を表す文字列です。
  • ディレクトリ (テナント) ID - 組織で使用するアプリケーションとリソースに ID とアクセス管理 (IAM) 機能を提供します。 組織専用の基幹業務アプリケーション (名前付きシングルテナント アプリケーションとも言います) を作成している場合に指定できます。
  • ID プロバイダーの URL (インスタンス) とアプリケーションのサインイン対象ユーザー。 これら 2 つのパラメーターは機関と総称されます。
  • クライアントの資格情報 - 使用できる形式は、アプリケーション シークレット (クライアント シークレット文字列)、または (種類が X509Certificate2 の) 証明書です (機密クライアント アプリの場合)。
  • Web Apps、および公開クライアント アプリ (特にアプリでブローカーを使用する必要がある場合) では、ID プロバイダーがセキュリティ トークンを使用してアプリケーションに再びアクセスするリダイレクト URI も設定する必要があります。

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

以下のコードでは、パブリック クライアント アプリケーションをインスタンス化して、職場および学校のアカウントまたは個人の 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 を直接提供する可能性があります。

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

    IPublicClientApplication app;
    app = 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) テレメトリを送信するために使用するデリゲートを設定します。

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

機密クライアント アプリケーション ビルダーに固有の修飾子は、ConfidentialClientApplicationBuilder クラスにあります。 さまざまな方法については、Azure SDK for .NET のドキュメントを参照してください。

.WithCertificate(X509Certificate2 certificate).WithClientSecret(string clientSecret) などの修飾子は相互に排他的です。 両方を提供すると、意味のある例外が MSAL によってスローされます。