PublicClientApplication Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
- 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 é |
| 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 |
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 |
| AcquireTokenSilent(IEnumerable<String>, String) |
[V3 API] Tentativas de adquirir um token de acesso para o IAccount ter a Username correspondência ao dado |
| 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:
|
| 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 |
| IsEmbeddedWebViewAvailable() |
Retorna |
| IsProofOfPossessionSupportedByClient() |
Usado para determinar se o corretor atualmente disponível é capaz de realizar a Prova de Posse. |
| IsUserInteractive() |
Retorna |
| 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>) |