PublicClientApplication Classe

Definição

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
PublicClientApplication
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 sejahttps://login.microsoftonline.com/common/)

(Herdado de ClientApplicationBase)
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 AcquireTokenForClient qual usa apenas o cache do aplicativo (consulte IConfidentialClientApplication).

(Herdado de ClientApplicationBase)

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 account cache do token de usuário. Veja https://aka.ms/msal-net-acquiretokensilent para mais detalhes

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

[API V3] Tenta adquirir um token de acesso para que ele IAccountUsername corresponda ao determinado loginHintno cache de token de usuário. Veja https://aka.ms/msal-net-acquiretokensilent para mais detalhes

(Herdado de ClientApplicationBase)
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:

  • O método primeiro adquire um código de dispositivo da autoridade e o retorna ao chamador por meio do deviceCodeResultCallback. Esse retorno de chamada cuida da interação com o usuário para direcioná-lo a autenticar (para uma URL específica, com um código)
  • Em seguida, o método continua a sondar o token de segurança que é concedido após o logon bem-sucedido pelo usuário com base nas informações de código do dispositivo
Consulte https://aka.ms/msal-device-code-flow.
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á true se um agente de autenticação puder ser usado. Esse método só é necessário para cenários móveis que dão suporte ao MAM (Gerenciamento de Aplicativos Móveis). Em outros casos, use WithBroker, que retornará para usar um navegador se um agente de autenticação não estiver disponível.

IsEmbeddedWebViewAvailable()

Retorna true se a MSAL puder usar um modo de exibição da Web inserido (navegador da Web).

IsProofOfPossessionSupportedByClient()

Usado para determinar se o agente atualmente disponível é capaz de executar Prova de Posse.

IsUserInteractive()

Retorna false quando o aplicativo é executado no modo sem cabeça (por exemplo, quando SSH-d em um computador Linux). Navegadores (exibições da Web) e agentes não poderão ser usados se não houver suporte à interface do usuário. Para esses cenários, use AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>).

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>)

Aplica-se a