Microsoft Authentication Library (MSAL) アプリは、問題の診断に役立つログ メッセージを生成します。 アプリでは、数行のコードでログ記録を構成し、詳細レベルと個人データと組織データをログに記録するかどうかをカスタム制御できます。 MSAL ログの実装を作成し、ユーザーが認証の問題がある場合にログを送信する方法を提供することをお勧めします。
ログ記録のレベル
MSAL には、いくつかのレベルのログの詳細が用意されています。
- LogAlways: このログ レベルでは、レベル のフィルター処理は行われません。 すべてのレベルのログ メッセージがログに記録されます。
- 重大: 回復不能なアプリケーションまたはシステムのクラッシュ、または直ちに注意が必要な致命的な障害を記述するログ。
- エラー: 問題が発生し、エラーが生成されたことを示します。 問題のデバッグと特定に使用されます。
- 警告: 必ずしもエラーや障害が発生したことを示すものではなく、診断や問題の特定を目的としています。
- 情報: MSAL は、必ずしもデバッグを目的としていない情報提供目的のイベントをログに記録します。
- 詳細 (既定): MSAL は、ライブラリの動作の詳細をログに記録します。
Note
すべての MSAL SDK のすべてのログ レベルが使用できるわけではありません
個人データと組織データ
既定では、MSAL ロガーは機密性の高い個人データや組織データをキャプチャしません。 ライブラリには、個人データと組織データのログ記録を有効にするオプションが用意されています (これを行う場合)。
次のセクションでは、アプリケーションの MSAL エラー ログの詳細について説明します。
iOS および macOS 用の MSAL でのログ記録 - ObjC
MSAL ログをキャプチャし、独自のアプリケーションのログ記録に組み込むコールバックを設定します。 コールバックのシグネチャは次のようになります。
/*!
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);
例えば次が挙げられます。
[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
}
}];
個人データ
既定では、MSAL は個人データをキャプチャまたはログに記録しません。 このライブラリを使用すると、アプリ開発者は MSALLogger クラスのプロパティを使用してこれを有効にすることができます。
pii.Enabledを有効にすると、アプリは機密性の高いデータを安全に処理し、規制要件に従う責任を負います。
// 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;
ログ記録のレベル
iOS および macOS 用の MSAL を使用してログ記録を行うときにログ 記録レベルを設定するには、次のいずれかの値を使用します。
| Level | 説明 |
|---|---|
MSALLogLevelNothing |
すべてのログ記録を無効にする |
MSALLogLevelError |
既定のレベル。エラーが発生した場合にのみ情報が出力されます |
MSALLogLevelWarning |
Warnings |
MSALLogLevelInfo |
パラメーターとさまざまなキーチェーン操作を含むライブラリ エントリ ポイント |
MSALLogLevelVerbose |
API トレース |
例えば次が挙げられます。
MSALGlobalConfig.loggerConfig.logLevel = MSALLogLevelVerbose;
ログ メッセージの形式
MSAL ログ メッセージのメッセージ部分は、次の形式になります。 TID = <thread_id> MSAL <sdk_ver> <OS> <OS_ver> [timestamp - correlation_id] message
例えば次が挙げられます。
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.
関連付け ID とタイムスタンプを指定すると、問題を追跡するのに役立ちます。 タイムスタンプと関連付け ID の情報は、ログ メッセージで確認できます。 それらを取得する唯一の信頼性の高い場所は、MSAL ログ メッセージからです。
次のステップ
その他のコード サンプルについては、Microsoft ID プラットフォームコード サンプルを参照してください。