PublicClientApplication Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Classe abstrata que contém métodos e propriedades comuns da API. Para obter detalhes, consulte 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
- Herança
- Implementações
Exemplos
Aqui está um exemplo de como usar PublicClientApplication com um agente de autenticação e cache.
{
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 =>
Comentários
Diferentemente ConfidentialClientApplicationdisso, os clientes públicos não conseguem armazenar segredos de tempo de configuração e, como resultado, não têm nenhum segredo do cliente.
O URI de redirecionamento necessário para autenticação interativa é determinado automaticamente pela biblioteca. Ele não precisa ser passado explicitamente no construtor. Dependendo da estratégia de autenticação (por exemplo, por meio do Gerenciador de Autenticação web, aplicativo de autenticação, navegador etc.), URIs de redirecionamento diferentes serão usadas pela MSAL. Os URIs de redirecionamento sempre devem ser configurados na folha Azure Active Directory no portal do Azure.
Propriedades
| Nome | Description |
|---|---|
| AppConfig |
Detalhes sobre a configuração do ClientApplication para fins de depuração. (Herdado de ClientApplicationBase) |
| Authority |
Obtém a URL da autoridade ou o STS (serviço de token de segurança) do qual MSAL.NET adquirirá tokens de segurança O valor retornado dessa propriedade é o valor fornecido pelo desenvolvedor no construtor do aplicativo ou, caso contrário, o valor do Microsoft.Identity.Client.ApplicationBase.DefaultAuthority membro estático (ou seja |
| IsSystemWebViewAvailable |
Retornará true se a MSAL puder usar um navegador do sistema. |
| OperatingSystemAccount |
Um valor de conta especial que indica que a conta atual do sistema operacional deve ser usada para registrar o usuário em log. Nem todos os sistemas operacionais e fluxos de autenticação dão suporte a esse conceito. Nesse caso, a chamada AcquireTokenSilent(IEnumerable<String>, IAccount) gerará um MsalUiRequiredException. |
| UserTokenCache |
Cache de token de usuário. Ele contém tokens de acesso, tokens de ID e tokens de atualização para contas. Ele é usado e atualizado silenciosamente se necessário ao chamar AcquireTokenSilent(IEnumerable<String>, IAccount) ou uma das substituições de AcquireTokenSilent(IEnumerable<String>, IAccount).
Ele é atualizado por cada método AcquireTokenXXX, com exceção do |
Métodos
| Nome | Description |
|---|---|
| AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>) |
Solicitação não interativa para adquirir um token de segurança para o usuário conectado no Windows, por meio da Autenticação Windows Integrada. Consulte https://aka.ms/msal-net-iwa. A conta usada nessas substituições é extraída do sistema operacional como o nome da entidade de segurança do usuário atual. |
| AcquireTokenByUsernamePassword(IEnumerable<String>, String, SecureString) |
Obsoleto.
Solicitação não interativa para adquirir um token de segurança da autoridade, por meio da Autenticação de Nome de Usuário/Senha. Consulte https://aka.ms/msal-net-up para obter detalhes. |
| AcquireTokenByUsernamePassword(IEnumerable<String>, String, String) |
Obsoleto.
Solicitação não interativa para adquirir um token de segurança da autoridade, por meio da Autenticação de Nome de Usuário/Senha. Consulte https://aka.ms/msal-net-up para obter detalhes. |
| AcquireTokenInteractive(IEnumerable<String>) |
Solicitação interativa para adquirir um token para os escopos especificados. A janela interativa será pai da janela especificada. O usuário será necessário para selecionar uma conta. |
| AcquireTokenSilent(IEnumerable<String>, IAccount) |
[API V3] Tenta adquirir um token de acesso para o |
| AcquireTokenSilent(IEnumerable<String>, String) |
[API V3] Tenta adquirir um token de acesso para que ele IAccountUsername corresponda ao determinado |
| AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) |
Adquire um token de segurança em um dispositivo sem um navegador da Web, permitindo que o usuário se autentique em outro dispositivo. Isso é feito em duas etapas:
|
| GetAccountAsync(String, CancellationToken) |
Obtenha o IAccount identificador pelo identificador entre as contas disponíveis no cache de token. (Herdado de ClientApplicationBase) |
| GetAccountAsync(String) |
Obtenha o IAccount identificador pelo identificador entre as contas disponíveis no cache de token. (Herdado de ClientApplicationBase) |
| GetAccountsAsync() |
Retorna todas as contas disponíveis no cache de token de usuário para o aplicativo. (Herdado de ClientApplicationBase) |
| GetAccountsAsync(CancellationToken) |
Retorna todas as contas disponíveis no cache de token de usuário para o aplicativo. (Herdado de ClientApplicationBase) |
| GetAccountsAsync(String, CancellationToken) |
Obtenha a IAccount coleção por seu identificador entre as contas disponíveis no cache de token, com base no fluxo do usuário. Isso é para Azure cenários do AD B2C. (Herdado de ClientApplicationBase) |
| GetAccountsAsync(String) |
Obtenha a IAccount coleção por seu identificador entre as contas disponíveis no cache de token, com base no fluxo do usuário. Isso é para Azure cenários do AD B2C. (Herdado de ClientApplicationBase) |
| IsBrokerAvailable() |
Retornará |
| IsEmbeddedWebViewAvailable() |
Retorna |
| IsProofOfPossessionSupportedByClient() |
Usado para determinar se o agente atualmente disponível é capaz de executar Prova de Posse. |
| IsUserInteractive() |
Retorna |
| RemoveAsync(IAccount, CancellationToken) |
Remove todos os tokens no cache da conta especificada. (Herdado de ClientApplicationBase) |
| RemoveAsync(IAccount) |
Remove todos os tokens no cache da conta especificada. (Herdado de ClientApplicationBase) |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IByRefreshToken.AcquireTokenByRefreshToken(IEnumerable<String>, String) |
Adquire um token de acesso de um token de atualização existente e o armazena, e o token de atualização, no cache de token de usuário, onde ele estará disponível para outras chamadas AcquireTokenSilent. Esse método pode ser usado na migração para MSAL da ADAL v2 e em vários cenários de integração em que você tem um RefreshToken disponível. Consulte https://aka.ms/msal-net-migration-adal2-msal2. |
Métodos de Extensão
| Nome | Description |
|---|---|
| IsEmbeddedWebViewAvailable(IPublicClientApplication) |
Retornará true se a MSAL puder usar uma visão da Web inserida (navegador). |
| IsProofOfPossessionSupportedByClient(IPublicClientApplication) |
Usado para determinar se o agente atualmente disponível é capaz de executar Prova de Posse. |
| IsSystemWebViewAvailable(IPublicClientApplication) |
Retornará true se a MSAL puder usar um navegador do sistema. |
| IsUserInteractive(IPublicClientApplication) |
Retorna false quando o programa é executado no sistema operacional sem cabeça, por exemplo, quando o SSH é colocado em um computador Linux. Navegadores (visões da Web) e agentes não poderão ser usados se não houver suporte à interface do usuário. Em vez disso, use AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) ou AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>) |