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.
Note
Esse recurso está disponível a partir do MSAL.NET versão 4.54.0.
Um desafio comum para os desenvolvedores é o gerenciamento de segredos, credenciais, certificados e chaves usadas para proteger a comunicação entre os serviços. As identidades gerenciadas no Azure eliminam a necessidade de os desenvolvedores lidarem com essas credenciais manualmente. O MSAL.NET dá suporte à obtenção de tokens por meio do serviço de identidade gerenciada quando usado com aplicativos em execução na infraestrutura do Azure, como:
-
Serviço de Aplicativo do Azure (versão da API
2019-08-01e posteriores) - Máquinas Virtuais do Azure
- Azure Arc
- Azure Cloud Shell
- Malha de Serviços do Azure
Para obter uma lista completa, consulte Azure serviços que podem usar identidades gerenciadas para acessar outros serviços.
Qual SDK usar - SDK do Azure ou MSAL?
As bibliotecas MSAL fornecem APIs de nível inferior mais próximas dos protocolos OAuth2 e OIDC.
Tanto MSAL.NET quanto SDK do Azure permitem adquirir tokens por meio de identidade gerenciada. Internamente, o SDK do Azure utiliza o MSAL.NET e fornece uma API de nível superior por meio de suas abstrações DefaultAzureCredential e ManagedIdentityCredential.
Se o aplicativo já usa um dos SDKs, continue usando o mesmo SDK. Use SDK do Azure, se você estiver escrevendo um novo aplicativo e planejando chamar outros recursos Azure, pois esse SDK fornece uma melhor experiência de desenvolvedor, permitindo que o aplicativo seja executado em computadores de desenvolvedor privados em que a identidade gerenciada não existe. Considere usar a MSAL se você precisar chamar outras APIs Web downstream, como Microsoft Graph ou sua própria API Web.
Note
Microsoft. Identity.Web é uma API de nível superior que oferece integração com ASP.NET Core e ASP.NET Classic, enquanto usa MSAL sob o capô. A biblioteca também fornece uma maneira de carregar credenciais (certificados, declarações assinadas) usadas por MSAL.NET como credenciais de cliente. Para certificados, ele usa o DefaultAzureCredentials para buscar certificados do KeyVault. Ele também oferece federação de identidade de carga de trabalho com credenciais de identidade gerenciada. Para obter detalhes, consulte CredentialDescription.
Início rápido
Para começar rapidamente e ver Azure Identidade Gerenciada em ação, você pode usar um dos exemplos criados pela equipe para esta finalidade:
Como usar identidades gerenciadas
Há dois tipos de identidades gerenciadas disponíveis para desenvolvedores : atribuídos pelo sistema e atribuídos ao usuário. Você pode saber mais sobre as diferenças no artigo tipos de identidade gerenciada . O MSAL.NET suporta a obtenção de tokens das duas formas. Log do MSAL.NET permite acompanhar solicitações e metadados relacionados.
Antes de usar identidades gerenciadas de MSAL.NET, os desenvolvedores devem habilitá-las para os recursos que desejam usar por meio de CLI do Azure ou portal do Azure.
Examples
Para identidades atribuídas pelo usuário e atribuídas pelo sistema, os desenvolvedores podem usar a ManagedIdentityApplicationBuilder classe.
Identidades gerenciadas atribuídas pelo sistema
Para identidades gerenciadas atribuídas pelo sistema, o desenvolvedor não precisa passar informações adicionais ao criar uma instância, IManagedIdentityApplicationpois inferirá automaticamente os metadados relevantes sobre a identidade atribuída.
AcquireTokenForManagedIdentity(String) é chamado com o recurso para o qual um token deve ser adquirido, como https://management.azure.com.
IManagedIdentityApplication mi = ManagedIdentityApplicationBuilder.Create(ManagedIdentityId.SystemAssigned)
.Build();
AuthenticationResult result = await mi.AcquireTokenForManagedIdentity(resource)
.ExecuteAsync()
.ConfigureAwait(false);
Identidades Gerenciadas Atribuídas ao Usuário
Para identidades gerenciadas atribuídas pelo usuário, o desenvolvedor precisa passar a ID do cliente, o identificador de recurso completo ou a ID do objeto da identidade gerenciada ao criar IManagedIdentityApplication.
Assim como no caso de identidades gerenciadas atribuídas pelo sistema, AcquireTokenForManagedIdentity(String) é chamado passando o recurso para o qual se deseja obter um token, como https://management.azure.com.
IManagedIdentityApplication mi = ManagedIdentityApplicationBuilder.Create(ManagedIdentityId.WithUserAssignedClientId(clientIdOfUserAssignedManagedIdentity))
.Build();
AuthenticationResult result = await mi.AcquireTokenForManagedIdentity(resource)
.ExecuteAsync()
.ConfigureAwait(false);
Caching
Por padrão, MSAL.NET dá suporte ao cache na memória. A MSAL não dá suporte à extensibilidade de cache para identidade gerenciada devido a problemas de segurança ao usar o cache distribuído. Como um token adquirido para identidade gerenciada pertence a um recurso de Azure, o uso de um cache distribuído pode expô-lo aos outros recursos Azure compartilhando o cache.
Troubleshooting
Para solicitações com falha, a resposta de erro contém uma ID de correlação que pode ser usada para análise de log e diagnóstico adicional. Tenha em mente que os IDs de correlação gerados no MSAL.NET ou fornecidos ao MSAL são diferentes do ID retornado nas respostas de erro do servidor, pois o MSAL.NET não pode passar o ID de correlação para os endpoints de aquisição de token de identidade gerenciada.
Potenciais erros
MsalServiceException Código de erro: managed_identity_failed_response Mensagem de erro: ocorreu um erro inesperado ao buscar o token do AAD
Essa exceção pode significar que o recurso para o qual você está tentando adquirir um token não tem suporte ou é fornecido usando o formato de ID de recurso incorreto. Exemplos de formatos de ID de recurso corretos incluem https://management.azure.com/.default, https://management.azure.come https://graph.microsoft.com.
MsalServiceException Código de erro: managed_identity_unreachable_network.
Essa exceção pode significar que você provavelmente está usando um recurso em que MSAL.NET não dá suporte à aquisição de token para identidade gerenciada ou está executando o código de exemplo de um computador de desenvolvimento em que o ponto de extremidade para adquirir o token para identidades gerenciadas é inacessível.