Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Para garantir que os serviços de autenticação que utilizam MSAL.NET estão a correr corretamente, o MSAL oferece várias formas de monitorizar o seu comportamento, de modo a identificar e resolver problemas antes de ocorrerem em produção. O uso incorreto do MSAL (no que diz respeito ao ciclo de vida dos tokens e cache) não leva a falhas imediatas, no entanto, por vezes surgem em situações de alto tráfego após a aplicação estar em produção durante algum tempo.
Por exemplo, se apenas uma instância de uma aplicação cliente confidencial for usada e o MSAL não estiver configurado para serializar a cache do token, a cache crescerá para sempre. Outro problema surge ao criar uma nova aplicação cliente confidencial e não utilizar a cache, o que pode levar a problemas como limitação por parte do fornecedor de identidade. Para recomendações sobre como utilizar o MSAL de forma adequada, consulte Alta Disponibilidade.
Logging
Uma das ferramentas que o MSAL oferece para combater problemas de produção é registar erros quando o MSAL não está devidamente configurado. É fundamental permitir o registo sempre que possível para monitorizar os registos em busca de erros e ajudar no diagnóstico de eventos problemáticos. Consulte Iniciar sessão no MSAL.NET para mais detalhes.
Os seguintes erros serão registados em MSAL:
- Ao usar uma autoridade que termina em
/commonou/organizationspara autenticação de credenciais do cliente (AcquireTokenForClient(IEnumerable<String>)).- A autoridade atual aponta para o ponto final
/commonou/organizations, o que não é recomendado. Consulte Fluxos de credenciais para clientes para mais detalhes.
- A autoridade atual aponta para o ponto final
- Quando a cache interna de token predefinida é usada ao utilizar aplicações cliente confidenciais.
- A cache de tokens padrão fornecida pela MSAL não é concebida para ser eficaz quando usada em aplicações cliente confidenciais. Consulte a serialização da cache de token no MSAL.NET para mais detalhes.
Metrics
Para além do registo, o MSAL disponibiliza métricas importantes em AuthenticationResult.AuthenticationResultMetadata. Consulte Adicionar monitorização às operações do MSAL para mais informações.
DurationTotalInMs - tempo total despendido pelo MSAL a adquirir um token, incluindo chamadas de rede e operações na cache. Crie um alerta sobre latência global elevada (mais de 1 segundo). Note-se que a primeira chamada de aquisição de token normalmente faz uma chamada HTTP extra.
DurationInCacheInMs - tempo gasto a carregar ou guardar a cache de tokens, que é personalizada pelo programador da aplicação (por exemplo, guardar no Redis). Crie um alerta sobre os picos.
Note
Para compreender como personalizar a cache de tokens, veja Serialização da cache de tokens no MSAL.NET.
DurationInHttpInMs - tempo gasto a fazer chamadas HTTP ao fornecedor de identidade. Crie um alerta sobre os picos.
TokenSource- indica a origem do token - tipicamente a cache ou o fornecedor de identidade. Os tokens são recuperados da cache muito mais rapidamente (por exemplo, ~100 ms contra ~700 ms). Esta métrica pode ser usada para monitorizar a taxa de acerto do cache.
CacheRefreshReason - especifica a razão para obter o token de acesso junto do fornecedor de identidade. Consulte CacheRefreshReason. Usar em conjunto com
TokenSource.TokenEndpoint - o URI real do endpoint do token usado para obter o token. Útil para compreender como o MSAL resolve o locatário nas chamadas silenciosas e a região nas chamadas regionais.
Note
A regionalização está disponível apenas para aplicações internas da Microsoft.
RegionDetails - os detalhes sobre a região utilizada para a chamada, como a região utilizada e qualquer erro de autodeteção.
Note
A regionalização está disponível apenas para aplicações internas da Microsoft.
OpenTelemetry
A partir do MSAL 4.58.0, a biblioteca suporta o OpenTelemetry – um conjunto de APIs que permitem instrumentação, geração e recolha de dados de telemetria de forma consistente e padronizada. Para começar, certifique-se de que;
- Instale a versão mais recente do MSAL.NET.
- Adicione a dependência do pacote OpenTelemetry ao seu projeto.
- Adiciona uma dependência do exportador, que permite exportar registos, por exemplo, o exportador de consola para OpenTelemetry.NET.
Note
Embora o exportador de consola seja um bom ponto de partida para depuração e diagnóstico locais, não é a melhor escolha para aplicações implementadas em produção. Recomendamos consultar a documentação oficial do exportador para saber mais sobre as opções disponíveis. Se estiver a hospedar aplicações no Azure, pode considerar ingerir dados do OpenTelemetry no Azure Data Explorer ou Azure Monitor.
No seu código de inicialização da aplicação, antes de iniciar o cliente de autenticação MSAL (por exemplo, PublicClientApplication ou ConfidentialClientApplication), declare uma nova MeterProvider instância, usando o seguinte código.
using var meterProvider = Sdk.CreateMeterProviderBuilder()
.AddMeter("MicrosoftIdentityClient_Common_Meter")
.AddConsoleExporter()
.Build();
Isto irá inicializar o fornecedor de métricas e utilizar a métrica incorporada do MSAL.NET (MicrosoftIdentityClient_Common_Meter), que recolhe um conjunto de contadores e histogramas. Quando se utiliza um exportador de consola, deverá ver a saída a ser enviada diretamente no terminal:
A secção seguinte descreve os contadores e histogramas suportados para o medidor padrão.
Counters
msalsuccess_counter
Contador para registar a agregação de pedidos com êxito no MSAL.
Metadata
| Campo | Description |
|---|---|
MsalVersion |
Versão do MSAL utilizada. |
Platform |
.NET SKU usado. |
ApiId |
ID para a API usada para aquisição de tokens. |
TokenSource |
Fonte do token (por exemplo, fornecedor de identidade ou cache). |
CacheRefreshReason |
Razão para a atualização do cache. |
CacheLevel |
L1, L2 ou Desconhecido quando a cache personalizada é usada mas o nível não é registado. |
msalfailure_counter
Contador para captar a agregação de pedidos com falha no MSAL.
Metadata
| Campo | Description |
|---|---|
MsalVersion |
Versão do MSAL utilizada. |
Platform |
SKU do .NET utilizado. |
ErrorCode |
Código de erro do Microsoft Entra ID no caso de MsalServiceException, MsalErrorCode no caso de MsalClientException ou nome da exceção caso não seja um(a) MsalException. |
ApiId |
ID para a API usada para aquisição de tokens. |
CacheRefreshReason |
Razão para a atualização do cache. |
Histogramas
MsalTotalDuration_1a_histogram
Histograma para captar a latência total em milissegundos para aquisição de tokens através da MSAL.
Metadata
| Campo | Description |
|---|---|
MsalVersion |
Versão do MSAL utilizada. |
Platform |
.NET SKU usado. |
ApiId |
ID para a API usada para aquisição de tokens. |
CacheLevel |
L1, L2 ou Desconhecido quando a cache personalizada é usada mas o nível não é registado. |
TokenSource |
Fonte do token (por exemplo, fornecedor de identidade ou cache). |
CacheRefreshReason |
Razão para a atualização do cache. |
MsalDurationInL1CacheInUs_1b_histogram
Histograma para captar latência quando é usada uma cache L1. Os valores estão em microssegundos para aquisição de tokens através da MSAL.
Metadata
| Campo | Description |
|---|---|
MsalVersion |
Versão do MSAL utilizada. |
Platform |
.NET SKU usado. |
ApiId |
ID para a API usada para aquisição de tokens. |
CacheLevel |
L1, L2 ou Desconhecido quando a cache personalizada é usada mas o nível não é registado. |
TokenSource |
Fonte do token (por exemplo, fornecedor de identidade ou cache). |
CacheRefreshReason |
Razão para a atualização do cache. |
MsalDurationInL2Cache_1a_histogram
Histograma para captar a latência do cache L2 em milissegundos para aquisição de tokens através do MSAL.
Metadata
| Campo | Description |
|---|---|
MsalVersion |
Versão do MSAL utilizada. |
Platform |
.NET SKU usado. |
ApiId |
ID para a API usada para aquisição de tokens. |
CacheRefreshReason |
Razão para a atualização do cache. |
MsalDurationInHttp_1a_histogram
Histograma para capturar a latência HTTP em milissegundos para aquisição de tokens através de MSAL.
Metadata
| Campo | Description |
|---|---|
MsalVersion |
Versão do MSAL utilizada. |
Platform |
SKU do .NET utilizado. |
ApiId |
ID para a API usada para aquisição de tokens. |
Informações adicionais
Para informações adicionais sobre a utilização do OpenTelemetry em aplicações .NET, consulte a observabilidade .NET com OpenTelemetry.