PublicClientApplication Classe

Definição

Classe abstrata contendo métodos e propriedades comuns da API. Para mais informações, consultar: 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
PublicClientApplication
Implementações

Exemplos

Aqui está um exemplo de como usar PublicClientApplication com um broker 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 =>

Observações

Ao contrário de ConfidentialClientApplication, os clientes públicos não conseguem guardar segredos de tempo de configuração e, como resultado, não possuem segredo do cliente.

O URI de redirecionamento necessário para a autenticação interativa é automaticamente determinado pela biblioteca. Não precisa de ser passado explicitamente no construtor. Dependendo da estratégia de autenticação (por exemplo, através do Web Authentication Manager, aplicação de autenticação, navegador, etc.), diferentes URIs de redirecionamento serão usados pela MSAL. Os URIs de redirecionamento devem estar sempre configurados na blade do Azure Active Directory no portal do Azure.

Propriedades

Name Descrição
AppConfig

Detalhes sobre a configuração da ClienteApplication para fins de depuração.

(Herdado de ClientApplicationBase)
Authority

Obtém a URL da autoridade, ou do serviço de token de segurança (STS), a partir do qual o MSAL.NET irá adquirir os tokens de segurança. O valor de retorno desta propriedade é ou o valor fornecido pelo programador no construtor da aplicação, ou, de outra forma, o valor do Microsoft.Identity.Client.ApplicationBase.DefaultAuthority membro estático (isto éhttps://login.microsoftonline.com/common/)

(Herdado de ClientApplicationBase)
IsSystemWebViewAvailable

Retorna verdadeiro se o MSAL conseguir usar um navegador do sistema.

OperatingSystemAccount

Um valor especial da conta que indica que a conta atual do sistema operativo deve ser usada para iniciar sessão do utilizador. Nem todos os sistemas operativos e fluxos de autenticação suportam este conceito, caso em que chamar AcquireTokenSilent(IEnumerable<String>, IAccount) gerará um MsalUiRequiredException.

UserTokenCache

Cache de tokens de utilizador. Detém tokens de acesso, id tokens e tokens de atualização para contas. É usado e atualizado silenciosamente se necessário ao ligar AcquireTokenSilent(IEnumerable<String>, IAccount) ou numa das substituições de AcquireTokenSilent(IEnumerable<String>, IAccount). É atualizado por cada método AcquireTokenXXX, com exceção do AcquireTokenForClient qual apenas utiliza a cache da aplicação (ver IConfidentialClientApplication).

(Herdado de ClientApplicationBase)

Métodos

Name Descrição
AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

Pedido não interativo para adquirir um token de segurança para o utilizador iniciado sessão no Windows, via Autenticação Windows Integrada. Consulte https://aka.ms/msal-net-iwa. A conta usada nestes overrides é retirada do sistema operativo como nome principal de utilizador atual.

AcquireTokenByUsernamePassword(IEnumerable<String>, String, SecureString)
Obsoleto.

Pedido não interativo para adquirir um token de segurança à autoridade, através de Autenticação por Nome de Utilizador/Palavra-passe. Consulte https://aka.ms/msal-net-up para obter detalhes.

AcquireTokenByUsernamePassword(IEnumerable<String>, String, String)
Obsoleto.

Pedido não interativo para adquirir um token de segurança à autoridade, através de Autenticação por Nome de Utilizador/Palavra-passe. Consulte https://aka.ms/msal-net-up para obter detalhes.

AcquireTokenInteractive(IEnumerable<String>)

Pedido interativo para adquirir um token para os escopos especificados. A janela interativa será parentada à janela especificada. O utilizador terá de selecionar uma conta.

AcquireTokenSilent(IEnumerable<String>, IAccount)

[V3 API] Tenta adquirir um token de acesso a account partir do cache de tokens do utilizador. Consulte https://aka.ms/msal-net-acquiretokensilent para mais detalhes

(Herdado de ClientApplicationBase)
AcquireTokenSilent(IEnumerable<String>, String)

[V3 API] Tentativas de adquirir um token de acesso para o IAccount ter a Username correspondência ao dado loginHint, a partir da cache do token do utilizador. Consulte https://aka.ms/msal-net-acquiretokensilent para mais detalhes

(Herdado de ClientApplicationBase)
AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>)

Adquire um token de segurança num dispositivo sem navegador web, permitindo que o utilizador se autentique noutro dispositivo. Isto é feito em dois passos:

  • O método adquire primeiro um código de dispositivo da autoridade e devolve-o ao chamador através do deviceCodeResultCallback. Este callback trata da interação com o utilizador para o direcionar para autenticar (para uma URL específica, com um código)
  • O método prossegue então para sondar o token de segurança, que é concedido após o login bem-sucedido pelo utilizador, com base na informação do código do dispositivo
Veja https://aka.ms/msal-device-code-flow.
GetAccountAsync(String, CancellationToken)

Obtenha o IAccount identificador do seu nome entre as contas disponíveis na cache de tokens.

(Herdado de ClientApplicationBase)
GetAccountAsync(String)

Obtenha o IAccount identificador do seu nome entre as contas disponíveis na cache de tokens.

(Herdado de ClientApplicationBase)
GetAccountsAsync()

Devolve todas as contas disponíveis na cache de tokens de utilizador para a aplicação.

(Herdado de ClientApplicationBase)
GetAccountsAsync(CancellationToken)

Devolve todas as contas disponíveis na cache de tokens de utilizador para a aplicação.

(Herdado de ClientApplicationBase)
GetAccountsAsync(String, CancellationToken)

Obtenha a IAccount coleção pelo seu identificador entre as contas disponíveis na cache de tokens, com base no fluxo do utilizador. Isto é para cenários B2C do Azure AD.

(Herdado de ClientApplicationBase)
GetAccountsAsync(String)

Obtenha a IAccount coleção pelo seu identificador entre as contas disponíveis na cache de tokens, com base no fluxo do utilizador. Isto é para cenários B2C do Azure AD.

(Herdado de ClientApplicationBase)
IsBrokerAvailable()

Retornos true se for possível usar um corretor de autenticação. Este método é necessário apenas para cenários móveis que suportam Gestão de Aplicações Móveis (MAM). Noutros casos, use WithBroker, que recorrerá para usar um navegador se um intermediário de autenticação não estiver disponível.

IsEmbeddedWebViewAvailable()

Retorna true se o MSAL puder usar uma web view embutida (navegador web).

IsProofOfPossessionSupportedByClient()

Usado para determinar se o corretor atualmente disponível é capaz de realizar a Prova de Posse.

IsUserInteractive()

Retorna false quando a aplicação corre em modo headless (por exemplo, quando se conecta por SSH a uma máquina Linux). Navegadores (visualizações web) e brokers não podem ser usados se não houver suporte à interface de utilizador. Para esses cenários, use AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>).

RemoveAsync(IAccount, CancellationToken)

Remove todos os tokens da cache da conta especificada.

(Herdado de ClientApplicationBase)
RemoveAsync(IAccount)

Remove todos os tokens da cache da conta especificada.

(Herdado de ClientApplicationBase)

Implementações de Interface Explícita

Name Descrição
IByRefreshToken.AcquireTokenByRefreshToken(IEnumerable<String>, String)

Adquire um token de acesso a partir de um token de atualização existente e armazena-o, juntamente com o token de atualização, na cache do token do utilizador, onde estará disponível para chamadas AcquireTokenSilent adicionais. Este método pode ser usado na migração para MSAL a partir do ADAL v2, e em vários cenários de integração onde tem um RefreshToken disponível. Consulte https://aka.ms/msal-net-migration-adal2-msal2.

Métodos da Extensão

Name Descrição
IsEmbeddedWebViewAvailable(IPublicClientApplication)

Retorna verdadeiro se o MSAL puder usar uma webview (navegador) embutida.

IsProofOfPossessionSupportedByClient(IPublicClientApplication)

Usado para determinar se o corretor atualmente disponível é capaz de realizar a Prova de Posse.

IsSystemWebViewAvailable(IPublicClientApplication)

Retorna verdadeiro se o MSAL conseguir usar um navegador do sistema.

IsUserInteractive(IPublicClientApplication)

Retorna false quando o programa corre em sistema operativo headless, por exemplo quando é SSH numa máquina Linux. Navegadores (webviews) e brokers não podem ser usados se não houver suporte para interface de utilizador. Em vez disso, por favor use AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) ou AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

Aplica-se a