Autenticação no MSAL para Python

Os aplicativos Biblioteca do Microsoft Authenticator (MSAL) geram mensagens de log que podem ajudar a diagnosticar problemas. Um aplicativo pode configurar o registro em log com algumas linhas de código e ter controle personalizado sobre o nível de detalhes e se os dados pessoais e organizacionais são registrados ou não. Recomendamos que você crie uma implementação de registro em log do MSAL e ofereça uma forma de os usuários enviarem logs quando tiverem problemas de autenticação.

O logging no MSAL Python foi projetado para usar os mecanismos padrão de logging do Python, portanto, todo o seu conhecimento anterior sobre logging em Python se aplica ao MSAL Python.

  • Por padrão, o log em qualquer Python script está desativado. Se você quiser habilitar o log de depuração para TODOS os módulos em todo o seu script Python, use logging.basicConfig(level=logging.DEBUG).
  • A maioria dos logs da MSAL Python já está no nível de depuração, que fica desativado por padrão. Mas, se você quiser habilitar o log de depuração para depurar os OUTROS módulos no seu script Python e, portanto, quiser silenciar o MSAL, basta desativar o logger usado pelo MSAL Python: logging.getLogger("msal").setLevel(logging.WARN).
  • O Python msal não registra informações de identificação pessoal (PII). Então, não há nem mesmo uma opção para ativar o registro de PII no MSAL para Python. Os desenvolvedores de aplicativos ainda podem usar o módulo de logging padrão do Python para registrar qualquer conteúdo. Ao fazer isso, o aplicativo assume a responsabilidade de lidar com dados altamente confidenciais com segurança e seguir os requisitos regulatórios.

Níveis de log

MSAL fornece vários níveis de detalhamento de log:

  • LogAlways: nenhuma filtragem de nível é feita neste nível de log. Mensagens de log de todos os níveis serão registradas.
  • Critical: logs que descrevem uma falha irrecuperável de um aplicativo ou do sistema, ou uma falha catastrófica que requer atenção imediata.
  • Error: indica que algo deu errado e um erro foi gerado. Usado para depurar e identificar problemas.
  • Warning: não houve necessariamente um erro ou falha, mas se destinam ao diagnóstico e à identificação de problemas.
  • Informational: o MSAL registrará eventos para fins informativos, não necessariamente para depuração.
  • Verbose (Padrão): a MSAL registra todos os detalhes do comportamento da biblioteca.

Note

Nem todos os níveis de log estão disponíveis para todas as bibliotecas MSAL.

Dados pessoais e organizacionais

Por padrão, o logger da MSAL não registra dados pessoais ou organizacionais altamente sensíveis. A biblioteca fornece a opção de habilitar o registro em log de dados pessoais e organizacionais se você decidir fazer isso.

As seções a seguir fornecem mais detalhes sobre o registro de erros em log do MSAL para o seu aplicativo.

MSAL para registro em log de Python

O log no MSAL para Python usa o módulo logging na biblioteca padrão do Python. Você pode configurar os logs da MSAL da seguinte forma (e vê-los em ação no username_password_sample):

Habilitar o log de depuração para todos os módulos

Por padrão, o log em qualquer Python script está desativado. Se você quiser habilitar o log detalhado para todos os módulos Python no seu script, use logging.basicConfig com um nível de logging.DEBUG:

import logging

logging.basicConfig(level=logging.DEBUG)

Isso imprimirá todas as mensagens de log fornecidas ao módulo de log para a saída padrão.

Configurar o nível de log da MSAL

Você pode configurar o nível de log do provedor de logs do MSAL para Python usando o método logging.getLogger() com o nome do logger "msal":

import logging

logging.getLogger("msal").setLevel(logging.WARN)

Configurar o log da MSAL com o Azure App Insights

Os logs do Python são enviados a um handler de log, que por padrão é o StreamHandler. Para enviar logs do MSAL para o Application Insights com uma chave de instrumentação, use o AzureLogHandler fornecido pela biblioteca opencensus-ext-azure.

Para instalar, opencensus-ext-azure adicione o opencensus-ext-azure pacote do PyPI às dependências ou à instalação do pip:

pip install opencensus-ext-azure

Em seguida, altere o manipulador padrão do provedor de log "msal" para uma instância de AzureLogHandler com uma chave de instrumentação definida na variável de ambiente APP_INSIGHTS_KEY:

import logging
import os

from opencensus.ext.azure.log_exporter import AzureLogHandler

APP_INSIGHTS_KEY = os.getenv('APP_INSIGHTS_KEY')

logging.getLogger("msal").addHandler(AzureLogHandler(connection_string='InstrumentationKey={0}'.format(APP_INSIGHTS_KEY)))

Dados pessoais e organizacionais no Python

A MSAL para Python não registra dados pessoais nem dados organizacionais. Não há nenhuma propriedade para ativar ou desativar o registro de dados pessoais ou da organização.

Você pode usar o log de Python padrão para registrar em log o que quiser, mas é responsável por lidar com dados confidenciais com segurança e seguir os requisitos regulatórios.

Para obter mais informações sobre como fazer logon no Python, consulte Python's Logging: how-to.