PublicClientApplication クラス

定義

一般的な API メソッドとプロパティを含む抽象クラス。 詳細については、以下を参照してください。 https://aka.ms/msal-net-client-applications

public sealed class PublicClientApplication : Microsoft.Identity.Client.ClientApplicationBase, Microsoft.Identity.Client.IByRefreshToken, Microsoft.Identity.Client.IPublicClientApplication
type PublicClientApplication = class
    inherit ClientApplicationBase
    interface IPublicClientApplication
    interface IClientApplicationBase
    interface IApplicationBase
    interface IByRefreshToken
Public NotInheritable Class PublicClientApplication
Inherits ClientApplicationBase
Implements IByRefreshToken, IPublicClientApplication
継承
PublicClientApplication
実装

認証ブローカーとキャッシュでPublicClientApplicationを使用する方法の例を次に示します

{
    string tenant = s_tids[s_currentTid];
    return $"https://login.microsoftonline.com/{tenant}";
}

private static IPublicClientApplication CreatePca(bool withWamBroker = false)
{
    // <PCABootstrapSample>
    var pcaBuilder = PublicClientApplicationBuilder
                    .Create(s_clientIdForPublicApp)
                    .WithAuthority(GetAuthority())
                    .WithLogging(Log, LogLevel.Verbose, true);

    if (withWamBroker)
    {
        IntPtr consoleWindowHandle = GetConsoleWindow();
        Func<IntPtr> consoleWindowHandleProvider = () => consoleWindowHandle;
        pcaBuilder.WithBroker(new BrokerOptions(BrokerOptions.OperatingSystems.Windows) { Title = "Only Windows" })
                  .WithParentActivityOrWindow(consoleWindowHandleProvider);
    }

    Console.WriteLine($"IsBrokerAvailable: {pcaBuilder.IsBrokerAvailable()}");

    var pca = pcaBuilder.WithRedirectUri("http://localhost") // required for DefaultOsBrowser
                    .Build();

    pca.UserTokenCache.SetBeforeAccess(notificationArgs =>
    {
        notificationArgs.TokenCache.DeserializeMsalV3(File.Exists(CacheFilePath)
            ? File.ReadAllBytes(CacheFilePath)
            : null);
    });
    pca.UserTokenCache.SetAfterAccess(notificationArgs =>

注釈

ConfidentialClientApplicationとは異なり、パブリック クライアントは構成時シークレットを保持できず、その結果、クライアント シークレットがありません。

対話型認証に必要なリダイレクト URI は、ライブラリによって自動的に決定されます。 コンストラクターで明示的に渡す必要はありません。 認証戦略 (Web 認証マネージャー、認証アプリ、ブラウザーなど) に応じて、MSAL によって異なるリダイレクト URI が使用されます。 リダイレクト URI は、常にAzure portalの [Azure Active Directory] ブレードで構成する必要があります。

プロパティ

名前 説明
AppConfig

デバッグ目的での ClientApplication の構成の詳細。

(継承元 ClientApplicationBase)
Authority

MSAL.NET がセキュリティ トークンを取得する機関またはセキュリティ トークン サービス (STS) の URL を取得します。このプロパティの戻り値は、アプリケーションのコンストラクターで開発者が指定した値か、Microsoft.Identity.Client.ApplicationBase.DefaultAuthority静的メンバーの値 (https://login.microsoftonline.com/common/) のいずれかです。

(継承元 ClientApplicationBase)
IsSystemWebViewAvailable

MSAL でシステム ブラウザーを使用できる場合は true を返します。

OperatingSystemAccount

現在のオペレーティング システム アカウントを使用してユーザーをログインさせる必要があることを示す特別なアカウント値。 すべてのオペレーティング システムと認証フローでこの概念がサポートされているわけではありません。この場合、 AcquireTokenSilent(IEnumerable<String>, IAccount) を呼び出すと MsalUiRequiredExceptionがスローされます。

UserTokenCache

ユーザー トークン キャッシュ。 アカウントのアクセス トークン、ID トークン、更新トークンが保持されます。 AcquireTokenSilent(IEnumerable<String>, IAccount)を呼び出すときや、AcquireTokenSilent(IEnumerable<String>, IAccount)のオーバーライドの 1 つを呼び出すときに、必要に応じて自動的に使用および更新されます。 アプリケーション キャッシュのみを使用する AcquireTokenForClient を除き、各 AcquireTokenXXX メソッドによって更新されます ( IConfidentialClientApplicationを参照)。

(継承元 ClientApplicationBase)

メソッド

名前 説明
AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

統合Windows認証を使用して、Windowsでサインインしているユーザーのセキュリティ トークンを取得する非対話型要求。 https://aka.ms/msal-net-iwaを参照してください。 このオーバーライドで使用されるアカウントは、オペレーティング システムから現在のユーザー プリンシパル名としてプルされます。

AcquireTokenByUsernamePassword(IEnumerable<String>, String, SecureString)
古い.

ユーザー名/パスワード認証を使用して、機関からセキュリティ トークンを取得するための非対話型要求。 詳細については、https://aka.ms/msal-net-up を参照してください。

AcquireTokenByUsernamePassword(IEnumerable<String>, String, String)
古い.

ユーザー名/パスワード認証を使用して、機関からセキュリティ トークンを取得するための非対話型要求。 詳細については、https://aka.ms/msal-net-up を参照してください。

AcquireTokenInteractive(IEnumerable<String>)

指定したスコープのトークンを取得するための対話型要求。 対話型ウィンドウは、指定されたウィンドウの親になります。 ユーザーはアカウントを選択する必要があります。

AcquireTokenSilent(IEnumerable<String>, IAccount)

[V3 API]ユーザー トークン キャッシュから account のアクセス トークンの取得を試みます。 詳細については、 https://aka.ms/msal-net-acquiretokensilent を参照してください

(継承元 ClientApplicationBase)
AcquireTokenSilent(IEnumerable<String>, String)

[V3 API]IAccountが特定のUsernameと一致するloginHintのアクセス トークンをユーザー トークン キャッシュから取得しようとします。 詳細については、 https://aka.ms/msal-net-acquiretokensilent を参照してください

(継承元 ClientApplicationBase)
AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>)

ユーザーが別のデバイスで認証できるようにすることで、Web ブラウザーを使用せずにデバイス上のセキュリティ トークンを取得します。 これは、次の 2 つの手順で行われます。

  • メソッドは、最初に機関からデバイス コードを取得し、 deviceCodeResultCallbackを介して呼び出し元に返します。 このコールバックは、(コードを使用して特定の URL に) 認証するようにユーザーに指示するためにユーザーと対話する処理を行います。
  • その後、このメソッドは、デバイス コード情報に基づいてユーザーがログインに成功したときに付与されるセキュリティ トークンのポーリングに進みます。
「https://aka.ms/msal-device-code-flow.」を参照してください。
GetAccountAsync(String, CancellationToken)

トークン キャッシュで使用可能なアカウントの識別子によって IAccount を取得します。

(継承元 ClientApplicationBase)
GetAccountAsync(String)

トークン キャッシュで使用可能なアカウントの識別子によって IAccount を取得します。

(継承元 ClientApplicationBase)
GetAccountsAsync()

アプリケーションのユーザー トークン キャッシュで使用可能なすべての アカウント を返します。

(継承元 ClientApplicationBase)
GetAccountsAsync(CancellationToken)

アプリケーションのユーザー トークン キャッシュで使用可能なすべての アカウント を返します。

(継承元 ClientApplicationBase)
GetAccountsAsync(String, CancellationToken)

ユーザー フローに基づいて、トークン キャッシュで使用可能なアカウントの識別子によって、 IAccount コレクションを取得します。 これは、Azure AD B2C シナリオ用です。

(継承元 ClientApplicationBase)
GetAccountsAsync(String)

ユーザー フローに基づいて、トークン キャッシュで使用可能なアカウントの識別子によって、 IAccount コレクションを取得します。 これは、Azure AD B2C シナリオ用です。

(継承元 ClientApplicationBase)
IsBrokerAvailable()

認証ブローカーを使用できる場合は、 true を返します。 この方法は、モバイル アプリケーション管理 (MAM) をサポートするモバイル シナリオでのみ必要です。 それ以外の場合は、 WithBrokerを使用します。認証ブローカーが使用できない場合は、ブラウザーを使用するようにフォールバックします。

IsEmbeddedWebViewAvailable()

MSAL が埋め込み Web ビュー (Web ブラウザー) を使用できるかどうかを true 返します。

IsProofOfPossessionSupportedByClient()

現在使用可能なブローカーが所有証明を実行できるかどうかを判断するために使用されます。

IsUserInteractive()

アプリケーションがヘッドレス モードで実行されている場合 (Linux マシンへの SSH-d など) の false を返します。 UI のサポートがない場合は、ブラウザー (Web ビュー) とブローカーを使用できません。 このようなシナリオでは、 AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>)を使用します。

RemoveAsync(IAccount, CancellationToken)

指定したアカウントのキャッシュ内のすべてのトークンを削除します。

(継承元 ClientApplicationBase)
RemoveAsync(IAccount)

指定したアカウントのキャッシュ内のすべてのトークンを削除します。

(継承元 ClientApplicationBase)

明示的なインターフェイスの実装

名前 説明
IByRefreshToken.AcquireTokenByRefreshToken(IEnumerable<String>, String)

既存の更新トークンからアクセス トークンを取得し、そのトークンと更新トークンをユーザー トークン キャッシュに格納します。このキャッシュは、さらに AcquireTokenSilent 呼び出しに使用できます。 この方法は、ADAL v2 から MSAL への移行や、RefreshToken を使用できるさまざまな統合シナリオで使用できます。 https://aka.ms/msal-net-migration-adal2-msal2を参照してください。

拡張メソッド

名前 説明
IsEmbeddedWebViewAvailable(IPublicClientApplication)

MSAL で埋め込み Web ビュー (ブラウザー) を使用できる場合は true を返します。

IsProofOfPossessionSupportedByClient(IPublicClientApplication)

現在使用可能なブローカーが所有証明を実行できるかどうかを判断するために使用されます。

IsSystemWebViewAvailable(IPublicClientApplication)

MSAL でシステム ブラウザーを使用できる場合は true を返します。

IsUserInteractive(IPublicClientApplication)

プログラムがヘッドレス OS で実行されている場合 (Linux マシンに SSH 接続されている場合など) に false を返します。 UI がサポートされていない場合、ブラウザー (Web ビュー) とブローカーは使用できません。 代わりに、 AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) または AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

適用対象