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.
Para garantir que os serviços de autenticação usando MSAL.NET estejam em execução corretamente, a MSAL fornece várias maneiras de monitorar seu comportamento para que os problemas possam ser identificados e resolvidos antes que ocorram na produção. O uso incorreto da MSAL (no que diz respeito ao ciclo de vida do token e ao cache) não leva a falhas imediatas, no entanto, às vezes, elas surgirão em cenários de alto tráfego depois que o aplicativo estiver em produção por um período de tempo.
Por exemplo, se apenas uma instância de um aplicativo cliente confidencial for usada e a MSAL não estiver configurada para serializar o cache de token, o cache crescerá para sempre. Outro problema surge ao criar um novo aplicativo cliente confidencial e não utilizar o cache, o que levará a problemas como a limitação do provedor de identidade. Para obter recomendações sobre como utilizar a MSAL adequadamente, consulte Alta Disponibilidade.
Logging
Uma das ferramentas que a MSAL fornece para combater problemas de produção é registrar erros quando a MSAL não estiver configurada corretamente. É fundamental habilitar o registro em log sempre que possível para monitorar os logs em busca de erros e ajudar no diagnóstico de eventos problemáticos. Consulte Registro em log no MSAL.NET para obter detalhes.
Os seguintes erros serão registrados na MSAL:
- Ao usar uma autoridade que termina em
/commonou/organizationspara autenticação de credencial de cliente (AcquireTokenForClient(IEnumerable<String>)).- A autoridade atual está direcionada ao ponto de extremidade
/commonou/organizations, o que não é recomendado. Consulte os fluxos de credenciais do cliente para obter mais detalhes.
- A autoridade atual está direcionada ao ponto de extremidade
- Quando o cache de token interno padrão é usado ao usar aplicativos cliente confidenciais.
- O cache de token padrão fornecido pela MSAL não foi projetado para ser executado quando usado em aplicativos cliente confidenciais. Consulte a serialização de cache de token em MSAL.NET para obter mais detalhes.
Métricas
Além do registro em log, a MSAL expõe métricas importantes em AuthenticationResult.AuthenticationResultMetadata. Consulte Adicionar monitoramento às operações do MSAL para obter mais detalhes.
DurationTotalInMs - tempo total gasto na MSAL adquirindo um token, incluindo chamadas de rede e operações de cache. Crie um alerta sobre a alta latência geral (mais de 1 segundo). Observe que a primeira chamada de aquisição de token geralmente faz uma chamada HTTP extra.
DurationInCacheInMs - tempo gasto carregando ou salvando o cache de token, que é personalizado pelo desenvolvedor do aplicativo (por exemplo, salvar no Redis). Crie um alerta sobre picos.
Note
Para entender como personalizar o cache de token, consulte a serialização de cache de token em MSAL.NET.
DurationInHttpInMs - tempo gasto fazendo chamadas HTTP para o provedor de identidade. Crie um alerta sobre picos.
TokenSource- indica a origem do token – normalmente, o cache ou o provedor de identidade. Os tokens são recuperados do cache muito mais rápido (por exemplo, ~100 ms versus ~700 ms). Essa métrica pode ser utilizada para monitorar a taxa de acertos do cache.
CacheRefreshReason – especifica o motivo para buscar o token de acesso do provedor de identidade. Consulte CacheRefreshReason. Use em conjunto com
TokenSource.TokenEndpoint - o URI real do endpoint de token usado para obter o token. Útil para entender como a MSAL resolve o locatário em chamadas silenciosas e a região em chamadas regionais.
Note
A regionalização está disponível apenas para aplicativos Microsoft internos.
RegionDetails - os detalhes sobre a região usada para fazer chamadas, como a região usada e qualquer erro de detecção automática.
Note
A regionalização está disponível apenas para aplicativos Microsoft internos.
OpenTelemetry
A partir da MSAL 4.58.0, a biblioteca dá suporte ao OpenTelemetry – um conjunto de APIs que habilitam a instrumentação, a geração e a coleta de dados de telemetria de maneira consistente e padronizada. Para começar, verifique se você;
- Instale a versão mais recente do MSAL.NET.
- Adicione a dependência do pacote OpenTelemetry ao seu projeto.
- Adicione uma dependência de exportador que permite exportar logs, por exemplo, o exportador de console para OpenTelemetry.NET.
Note
Embora o exportador de console seja um bom começo para depuração local e diagnóstico, não é a melhor opção para aplicativos implantados em produção. Recomendamos verificar a documentação oficial do exportador para saber mais sobre as opções disponíveis. Se você estiver hospedando aplicativos no Azure, poderá considerar a ingestão de dados OpenTelemetry em Azure Data Explorer ou Azure Monitor.
No código de inicialização do aplicativo, antes de inicializar o cliente de autenticação MSAL (por exemplo, PublicClientApplication ou ConfidentialClientApplication), declare uma nova MeterProvider instância usando o código a seguir.
using var meterProvider = Sdk.CreateMeterProviderBuilder()
.AddMeter("MicrosoftIdentityClient_Common_Meter")
.AddConsoleExporter()
.Build();
Isso inicializará o provedor de métricas e usará o medidor do MSAL.NET (MicrosoftIdentityClient_Common_Meter) integrado, que captura uma série de contadores e histogramas. Quando um exportador de console é usado, você deve ver a saída sendo canalizada diretamente no terminal:
A seção a seguir descreve os contadores e histogramas com suporte para o medidor padrão.
Contadores
msalsuccess_counter
Contador que captura a agregação de solicitações bem-sucedidas na MSAL.
Metadados
| Campo | Description |
|---|---|
MsalVersion |
Versão da MSAL usada. |
Platform |
.NET SKU usado. |
ApiId |
ID da API usada para aquisição de token. |
TokenSource |
Origem do token (por exemplo, provedor de identidade ou cache). |
CacheRefreshReason |
Motivo para atualização de cache. |
CacheLevel |
L1, L2 ou Unknown quando o cache personalizado é usado, mas o nível não é registrado. |
msalfailure_counter
Contador para registrar a agregação de solicitações com falha na MSAL.
Metadados
| Campo | Description |
|---|---|
MsalVersion |
Versão do MSAL usada. |
Platform |
SKU do .NET utilizado. |
ErrorCode |
Código de erro do Microsoft Entra ID no caso de MsalServiceException, MsalErrorCode no caso de MsalClientException ou o nome da exceção, caso não seja uma MsalException. |
ApiId |
ID da API usada para aquisição de token. |
CacheRefreshReason |
Motivo para atualização de cache. |
Histogramas
MsalTotalDuration_1a_histogram
Histograma para capturar a latência total em milissegundos para aquisição de token por meio da MSAL.
Metadados
| Campo | Description |
|---|---|
MsalVersion |
Versão da MSAL usada. |
Platform |
SKU do .NET utilizado. |
ApiId |
ID da API usada para aquisição de token. |
CacheLevel |
L1, L2 ou Unknown quando o cache personalizado é usado, mas o nível não é registrado. |
TokenSource |
Origem do token (por exemplo, provedor de identidade ou cache). |
CacheRefreshReason |
Motivo para atualização de cache. |
MsalDurationInL1CacheInUs_1b_histogram
Histograma para capturar latência quando um cache L1 é usado. Os valores estão em microssegundos para aquisição de token por meio da MSAL.
Metadados
| Campo | Description |
|---|---|
MsalVersion |
Versão da MSAL usada. |
Platform |
SKU do .NET utilizado. |
ApiId |
ID da API usada para aquisição de token. |
CacheLevel |
L1, L2 ou Unknown quando o cache personalizado é usado, mas o nível não é registrado. |
TokenSource |
Origem do token (por exemplo, provedor de identidade ou cache). |
CacheRefreshReason |
Motivo para atualização de cache. |
MsalDurationInL2Cache_1a_histogram
Histograma para capturar a latência de cache L2 em milissegundos para aquisição de token por meio da MSAL.
Metadados
| Campo | Description |
|---|---|
MsalVersion |
Versão da MSAL usada. |
Platform |
.NET SKU usado. |
ApiId |
ID da API usada para aquisição de token. |
CacheRefreshReason |
Motivo para atualização de cache. |
MsalDurationInHttp_1a_histogram
Histograma para capturar a latência HTTP em milissegundos para aquisição de token por meio da MSAL.
Metadados
| Campo | Description |
|---|---|
MsalVersion |
Versão da MSAL usada. |
Platform |
.NET SKU usado. |
ApiId |
ID da API usada para aquisição de token. |
Informações adicionais
Para obter informações adicionais sobre o uso do OpenTelemetry com aplicativos .NET, consulte .NET observabilidade com o OpenTelemetry.