Journalisation dans MSAL pour iOS/macOS

Les applications Microsoft Authentication Library (MSAL) génèrent des messages de journal qui peuvent aider à diagnostiquer les problèmes. Une application peut configurer la journalisation avec quelques lignes de code et avoir un contrôle personnalisé sur le niveau de détail et si les données personnelles et organisationnelles sont enregistrées ou non. Nous vous recommandons de créer une implémentation de journalisation MSAL et de fournir aux utilisateurs un moyen d’envoyer des journaux lorsqu’ils rencontrent des problèmes d’authentification.

Niveaux de journalisation

MSAL fournit plusieurs niveaux de détail de journalisation :

  • LogAlways : aucun filtrage de niveau n’est effectué pour ce niveau de journalisation. Les messages de journalisation de tous les niveaux sont enregistrés.
  • Critique : Journaux qui décrivent un plantage irrécupérable de l’application ou du système, ou une défaillance catastrophique nécessitant une attention immédiate.
  • Erreur : indique qu’un problème s’est produit et qu’une erreur a été générée. Utilisé pour le débogage et l’identification des problèmes.
  • Avertissement : Il n’y a pas nécessairement eu d’erreur ou d’échec, mais il est destiné aux diagnostics et à l’identification des problèmes.
  • Information : MSAL journalise les événements destinés à fournir des informations et pas nécessairement destinés au débogage.
  • Commentaire (par défaut) : MSAL journalise les détails complets du comportement de la bibliothèque.

Note

Tous les niveaux de journalisation ne sont pas disponibles pour tous les SDK MSAL.

Données personnelles et organisationnelles

Par défaut, l’enregistreur d’événements MSAL ne capture pas de données personnelles ou organisationnelles hautement sensibles. La bibliothèque offre la possibilité d’activer la journalisation des données personnelles et organisationnelles si vous décidez de le faire.

Les sections suivantes fournissent plus de détails sur la journalisation des erreurs MSAL pour votre application.

Journalisation MSAL pour iOS et macOS - ObjC

Définissez un rappel pour capturer la journalisation MSAL et l’incorporer dans la journalisation de votre propre application. La signature du rappel se présente comme suit :

/*!
    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);

Par exemple:

[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
        }
    }];

Données personnelles

Par défaut, MSAL ne capture ni ne journale aucune donnée personnelle. La bibliothèque permet aux développeurs d’applications d’activer cette fonctionnalité via une propriété dans la classe MSALLogger. En activant pii.Enabled, l’application prend en charge la gestion sécurisée des données hautement sensibles et le respect des exigences réglementaires.

// 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;

Niveaux de journalisation

Pour définir le niveau de journalisation lorsque vous vous connectez à l’aide de MSAL pour iOS et macOS, utilisez l’une des valeurs suivantes :

Niveau Description
MSALLogLevelNothing Désactiver toute journalisation
MSALLogLevelError Niveau par défaut, imprime les informations uniquement lorsque des erreurs se produisent
MSALLogLevelWarning Warnings
MSALLogLevelInfo Points d’entrée de bibliothèque, avec paramètres et diverses opérations de trousseau
MSALLogLevelVerbose Suivi d’API

Par exemple:

MSALGlobalConfig.loggerConfig.logLevel = MSALLogLevelVerbose;

Format du message de journal

La partie message des messages de journal MSAL est au format de TID = <thread_id> MSAL <sdk_ver> <OS> <OS_ver> [timestamp - correlation_id] message

Par exemple:

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.

Fournir des ID de corrélation et des horodatages sont utiles pour le suivi des problèmes. Les informations d’horodatage et d’ID de corrélation sont disponibles dans le message de journal. La seule source fiable pour les récupérer se trouve dans les messages de journalisation de MSAL.

Étapes suivantes

Pour plus d’exemples de code, reportez-vous à Plateforme d'identités Microsoft exemples de code.