Protokolování v MSAL pro iOS/macOS

Aplikace Identity a ověřování Microsoftu (MSAL) generují zprávy protokolu, které můžou pomoct s diagnostikou problémů. Aplikace může nakonfigurovat protokolování s několika řádky kódu a mít vlastní kontrolu nad úrovní podrobností a to, jestli se protokolují osobní a organizační data. Doporučujeme vytvořit implementaci protokolování MSAL a poskytnout uživatelům způsob odesílání protokolů, když mají problémy s ověřováním.

Úrovně protokolování

MSAL poskytuje několik úrovní podrobností protokolování:

  • LogAlways: Pro tuto úroveň protokolování se neprovádí žádné filtrování podle úrovně. Protokolové zprávy všech úrovní budou zaznamenávány.
  • Kritické: Protokoly, které popisují neobnovitelné zhroucení aplikace nebo systému nebo katastrofické selhání, které vyžaduje okamžitou pozornost.
  • Chyba: Označuje, že se něco nepovedlo a vygenerovala se chyba. Používá se k ladění a identifikaci problémů.
  • Upozornění: Nemusí se nutně jednat o chybu nebo selhání, ale jsou určené pro diagnostiku a určení problémů.
  • Informační: MSAL bude protokolovat události určené pro informativní účely, které nemusí být nutně určeny pro ladění.
  • Podrobné (výchozí): MSAL zaznamenává do protokolu veškeré podrobnosti o chování knihovny.

Note

Ne všechny úrovně protokolů jsou k dispozici pro všechny sady MSAL SDK.

Osobní a organizační data

Ve výchozím nastavení protokolovací nástroj MSAL nezachytává žádná vysoce citlivá osobní ani organizační data. Knihovna nabízí možnost povolit protokolování osobních a organizačních dat, pokud se tak rozhodnete.

Následující části obsahují další podrobnosti o protokolování chyb MSAL pro vaši aplikaci.

MSAL pro iOS a macOS – protokolování v ObjC

Nastavte zpětné volání pro zaznamenání protokolování MSAL a jeho začlenění do protokolování vlastní aplikace. Podpis zpětného volání vypadá takto:

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

Příklad:

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

Osobní údaje

Ve výchozím nastavení MSAL nezachytává ani neprotokoluje žádné osobní údaje. Knihovna umožňuje vývojářům aplikací zapnout tuto funkci prostřednictvím vlastnosti ve třídě MSALLogger. Zapnutím aplikace pii.Enabledpřebírá odpovědnost za bezpečné zpracování vysoce citlivých dat a dodržování zákonných požadavků.

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

Úrovně protokolování

Pokud chcete nastavit úroveň protokolování při protokolování pomocí MSAL pro iOS a macOS, použijte jednu z následujících hodnot:

Úroveň Description
MSALLogLevelNothing Zakázání veškerého protokolování
MSALLogLevelError Výchozí úroveň, vytiskne informace pouze v případě, že dojde k chybám.
MSALLogLevelWarning Warnings
MSALLogLevelInfo Vstupní body knihovny s parametry a různými operacemi s klíčenkou
MSALLogLevelVerbose Trasování rozhraní API

Příklad:

MSALGlobalConfig.loggerConfig.logLevel = MSALLogLevelVerbose;

Formát zprávy protokolu

Část zpráv protokolu MSAL je ve formátu TID = <thread_id> MSAL <sdk_ver> <OS> <OS_ver> [timestamp - correlation_id] message

Příklad:

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.

Poskytnutí ID korelace a časových razítek jsou užitečné pro sledování problémů. Časové razítko a informace o ID korelace jsou k dispozici ve zprávě protokolu. Jediným spolehlivým místem pro jejich načtení jsou zprávy protokolování MSAL.

Další kroky

Další ukázky kódu najdete v článku Ukázky kódu pro platformu Microsoft Identity.