Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A autenticação agenciada coleta credenciais do usuário usando o agente de autenticação do sistema para autenticar um aplicativo. Um agente de autenticação do sistema é um aplicativo em execução no computador de um usuário que gerencia os handshakes de autenticação e a manutenção de token para todas as contas conectadas.
A autenticação agenciada oferece os seguintes benefícios:
- Enables Single Sign-On (SSO): Permite que os aplicativos simplifiquem a forma como os usuários se autenticam com Microsoft Entra ID e protege Microsoft Entra ID tokens de atualização contra exfiltração e uso indevido.
- Segurança aprimorada: Muitos aprimoramentos de segurança são entregues com o intermediário, sem a necessidade de atualizar a lógica do aplicativo.
- Suporte a recursos aprimorados: Com a ajuda do agente, os desenvolvedores podem acessar recursos avançados de sistema operacional e serviço.
- Integração do sistema: Aplicativos que usam o plug-and-play do agente com o seletor de conta interno, permitindo que o usuário escolha rapidamente uma conta existente em vez de reentrar nas mesmas credenciais várias vez.
- Proteção de Token: Garante que os tokens de atualização estejam associados ao dispositivo e permita que os aplicativos adquiram tokens de acesso associados ao dispositivo. Consulte a Proteção de Token.
Windows fornece um agente de autenticação chamado Web Account Manager (WAM). O WAM permite que provedores de identidade, como Microsoft Entra ID, conectem-se nativamente ao sistema operacional e forneçam serviços de logon seguros aos aplicativos. A autenticação agenciada habilita o aplicativo para todas as operações permitidas pelas credenciais de logon interativas.
Há suporte para contas pessoais e contas corporativas ou de estudante da Microsoft. Em versões de Windows com suporte, a interface do usuário baseada em navegador padrão é substituída por uma experiência de autenticação mais suave, semelhante a aplicativos Windows internos.
Configurar o aplicativo para autenticação agenciada
Para habilitar a autenticação agenciada em seu aplicativo, siga estas etapas:
No portal Azure, navegue até Microsoft Entra ID e selecione App registrations no menu à esquerda.
Selecione o registro do seu aplicativo e depois Autenticação.
Adicione o URI de redirecionamento apropriado ao registro do aplicativo por meio de uma configuração de plataforma:
Em Configurações da plataforma, selecione + Adicionar uma plataforma.
Em Configurar plataformas, selecione o bloco do seu tipo de aplicativo (plataforma) para definir suas configurações, como aplicativos móveis e de área de trabalho.
Em URIs de redirecionamento personalizado, insira o seguinte URI de redirecionamento:
ms-appx-web://Microsoft.AAD.BrokerPlugin/{your_client_id}Substitua
{your_client_id}pela ID do aplicativo (cliente) do painel Visão Geral do registro do aplicativo.Selecione Configurar.
Para saber mais, consulte Adicionar um URI de redirecionamento a um registro de aplicativo.
De volta ao painel Autenticação, em Configurações avançadas, selecione Sim para Permitir fluxos de clientes públicos.
Selecione Salvar para aplicar as alterações.
Para autorizar o aplicativo para recursos específicos, navegue até o recurso em questão, selecione API Permissions e habilite Microsoft Graph e outros recursos que você deseja acessar.
Importante
Você também deve ser o administrador do seu locatário para autorizar o uso do aplicativo ao fazer login pela primeira vez.
Atribuir funções
Para executar com êxito o código do aplicativo com autenticação intermediada, conceda permissões à conta de usuário usando Azure RBAC (controle de acesso baseado em função). Atribua uma função apropriada à sua conta de usuário para o serviço de Azure relevante. Por exemplo:
- Azure Blob Storage: atribua a função Storage Account Data Contributor.
- Azure Key Vault: atribuir a função Key Vault Secrets Officer.
Se um aplicativo for especificado, ele deverá ter permissões de API definidas para user_impersonation Access Azure Storage (etapa 6 na seção anterior). Essa permissão de API permite que o aplicativo acesse o armazenamento do Azure em nome do usuário autenticado após o consentimento ser concedido durante o login.
Implementar o código
A biblioteca Azure Identity dá suporte à autenticação agenciada usando InteractiveBrowserCredential. A biblioteca azure-identity-broker fornece InteractiveBrowserBrokerCredentialBuilder, que cria um InteractiveBrowserCredential capaz de usar o agente de autenticação do sistema. Por exemplo, para usar a autenticação agenciada em um aplicativo de console Java para autenticar para Azure Key Vault com o SecretClient, siga estas etapas:
Adicione a dependência
azure-identity-brokerao arquivopom.xml:<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity-broker</artifactId> </dependency>Obtenha uma referência à janela pai na parte superior da qual a caixa de diálogo do seletor de conta deve aparecer. Para obter exemplos, consulte Obter um identificador de janela.
Crie uma instância de
InteractiveBrowserCredentialusandoInteractiveBrowserBrokerCredentialBuilder:import com.azure.identity.InteractiveBrowserCredential; import com.azure.identity.broker.InteractiveBrowserBrokerCredentialBuilder; import com.azure.security.keyvault.secrets.SecretClient; import com.azure.security.keyvault.secrets.SecretClientBuilder; import com.azure.security.keyvault.secrets.models.KeyVaultSecret; long windowHandle = getWindowHandle(); // See examples below InteractiveBrowserCredential credential = new InteractiveBrowserBrokerCredentialBuilder() .setWindowHandle(windowHandle) .useDefaultBrokerAccount() .build(); SecretClient client = new SecretClientBuilder() .vaultUrl("https://<your-key-vault-name>.vault.azure.net") .credential(credential) .buildClient(); KeyVaultSecret secret = client.getSecret("MySecret"); System.out.println("Retrieved secret: " + secret.getName());
No exemplo anterior, useDefaultBrokerAccount opta por um fluxo de autenticação silenciosa e agenciado com a conta do sistema padrão. Dessa forma, o usuário não precisa selecionar repetidamente a mesma conta. Se a autenticação silenciosa e agenciada falhar, InteractiveBrowserCredential retornará à autenticação interativa e agenciada.
A captura de tela a seguir mostra a experiência de autenticação interativa e agenciada alternativa:
Obter um identificador de janela
Quando você se autentica interativamente usando InteractiveBrowserCredential, precisa de um identificador de janela pai para garantir que a caixa de diálogo de autenticação apareça corretamente na janela que envia a solicitação.
Aplicativo JavaFX
Para um aplicativo JavaFX, use JNA (Java Native Access) para obter o identificador de janela:
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef;
public long getWindowHandle(Stage stage) {
WinDef.HWND hwnd = User32.INSTANCE.FindWindow(null, stage.getTitle());
return Pointer.nativeValue(hwnd.getPointer());
}
Aplicativo de console
Para um aplicativo de console no Windows, use o JNA para obter o identificador da janela do console:
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.Kernel32;
import com.sun.jna.platform.win32.WinDef;
WinDef.HWND hwnd = Kernel32.INSTANCE.GetConsoleWindow();
long windowHandle = Pointer.nativeValue(hwnd.getPointer());