PublicClientApplication クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
一般的な 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を使用する方法の例を次に示します。
{
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静的メンバーの値 ( |
| IsSystemWebViewAvailable |
MSAL でシステム ブラウザーを使用できる場合は true を返します。 |
| OperatingSystemAccount |
現在のオペレーティング システム アカウントを使用してユーザーをログインさせる必要があることを示す特別なアカウント値。 すべてのオペレーティング システムと認証フローでこの概念がサポートされているわけではありません。この場合、 AcquireTokenSilent(IEnumerable<String>, IAccount) を呼び出すと MsalUiRequiredExceptionがスローされます。 |
| UserTokenCache |
ユーザー トークン キャッシュ。 アカウントのアクセス トークン、ID トークン、更新トークンが保持されます。
AcquireTokenSilent(IEnumerable<String>, IAccount)を呼び出すときや、AcquireTokenSilent(IEnumerable<String>, IAccount)のオーバーライドの 1 つを呼び出すときに、必要に応じて自動的に使用および更新されます。
アプリケーション キャッシュのみを使用する |
メソッド
| 名前 | 説明 |
|---|---|
| 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]ユーザー トークン キャッシュから |
| AcquireTokenSilent(IEnumerable<String>, String) |
[V3 API]IAccountが特定のUsernameと一致する |
| AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) |
ユーザーが別のデバイスで認証できるようにすることで、Web ブラウザーを使用せずにデバイス上のセキュリティ トークンを取得します。 これは、次の 2 つの手順で行われます。
|
| 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() |
認証ブローカーを使用できる場合は、 |
| IsEmbeddedWebViewAvailable() |
MSAL が埋め込み Web ビュー (Web ブラウザー) を使用できるかどうかを |
| IsProofOfPossessionSupportedByClient() |
現在使用可能なブローカーが所有証明を実行できるかどうかを判断するために使用されます。 |
| IsUserInteractive() |
アプリケーションがヘッドレス モードで実行されている場合 (Linux マシンへの SSH-d など) の |
| 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>) |