Fazer logon no MSAL para iOS/macOS

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.

Níveis de log

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

  • LogAlways: nenhuma filtragem de nível é feita nesse nível de log. Mensagens de log de todos os níveis serão registradas.
  • Crítico: logs que descrevem uma falha irrecuperável do aplicativo ou do sistema, ou uma falha catastrófica que exige atenção imediata.
  • Erro: indica que algo deu errado e um erro foi gerado. Usado para depurar e identificar problemas.
  • Aviso: não houve necessariamente um erro ou falha, mas destina-se a diagnóstico e identificação de problemas.
  • Informativo: a MSAL registrará eventos para fins informativos, não necessariamente voltados à depuração.
  • Verboso (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 todos os SDKs da 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 ObjC para iOS e macOS

Defina um retorno de chamada para capturar o registro em log do MSAL e incorporá-lo no log do seu próprio aplicativo. A assinatura do callback é assim:

/*!
    The LogCallback block for the MSAL logger

    @param  level           The level of the log message
    @param  message         The message being logged
    @param  containsPII     If the message might contain Personally Identifiable Information (PII)
                            this will be true. Log messages possibly containing PII will not be
                            sent to the callback unless PIllLoggingEnabled is set to YES on the
                            logger.

 */
typedef void (^MSALLogCallback)(MSALLogLevel level, NSString *message, BOOL containsPII);

Por exemplo:

[MSALGlobalConfig.loggerConfig setLogCallback:^(MSALLogLevel level, NSString *message, BOOL containsPII)
    {
        if (!containsPII)
        {
#if DEBUG
            // IMPORTANT: MSAL logs may contain sensitive information. Never output MSAL logs with NSLog, or print, directly unless you're running your application in debug mode. If you're writing MSAL logs to file, you must store the file securely.
            NSLog(@"MSAL log: %@", message);
#endif
        }
    }];

Dados pessoais

Por padrão, a MSAL não captura nem registra dados pessoais. A biblioteca permite que os desenvolvedores de aplicativos ativem isso por meio de uma propriedade na classe MSALLogger. Ao ativar pii.Enabled, o aplicativo assume a responsabilidade de lidar com dados altamente confidenciais com segurança e seguir os requisitos regulatórios.

// By default, the `MSALLogger` doesn't capture any PII

// PII will be logged
MSALGlobalConfig.loggerConfig.piiEnabled = YES;

// PII will NOT be logged
MSALGlobalConfig.loggerConfig.piiEnabled = NO;

Níveis de log

Para definir o nível de log ao fazer logon usando MSAL para iOS e macOS, use um dos seguintes valores:

Nível Description
MSALLogLevelNothing Desabilita todo o registro em log
MSALLogLevelError Nível padrão, imprime informações somente quando ocorrem erros
MSALLogLevelWarning Warnings
MSALLogLevelInfo Pontos de entrada de biblioteca, com parâmetros e várias operações de conjunto de chaves
MSALLogLevelVerbose Rastreamento de APIs

Por exemplo:

MSALGlobalConfig.loggerConfig.logLevel = MSALLogLevelVerbose;

Formato de mensagem de log

A porção de mensagem das mensagens de log do MSAL está no formato de TID = <thread_id> MSAL <sdk_ver> <OS> <OS_ver> [timestamp - correlation_id] message

Por exemplo:

TID = 551563 MSAL 0.2.0 iOS Sim 12.0 [2018-09-24 00:36:38 - 36764181-EF53-4E4E-B3E5-16FE362CFC44] acquireToken returning with error: (MSALErrorDomain, -42400) User cancelled the authorization session.

Fornecer IDs de correlação e carimbos de data/hora ajuda a identificar problemas. As informações de carimbo de data/hora e ID de correlação estão disponíveis na mensagem de log. O único lugar confiável para recuperá-los é nas mensagens de log do MSAL.

Próximas Etapas 

Para obter mais exemplos de código, consulte exemplos de código da plataforma de identidade da Microsoft.