Microsoft365(Azure AD)でのユーザ認証は、ざっくり言うと認証を行った時にトークンが発行されてこれを利用して認証を行う。
このトークンは既定で90日有効でモバイル端末等ではこの期間中再認証を行うことなく利用をすることが出来る。
参考:
Exchange Online での先進認証によるアカウントのセットアップ
<https://docs.microsoft.com/ja-jp/exchange/clients-and-mobile-in-exchange-online/outlook-for-ios-and-android/setup-with-modern-authentication>
しかし、アカウント運用の方法によりこのトークン期限が極端に短くなってしまうケースがある。
認証フェデレーションを行っており且つ同期元からパスワード更新日の属性をAzure ADへ同期していない場合に発生し得るもので、パスワードの管理をフェデレーション先のシステムで行っているためAzure ADには更新の記録が残らずに「サイレントモード」での動作となり、この場合にトークンの有効期限が12時間となっていしまいその度に再認証が必要な状態となる。
※ Azure AD Connectを使用している場合は、既定で必要な属性を同期するようになっている。
これを解消するには、Azure ADのユーザの「StsRefreshTokensValidFrom」プロパティに手動で日付を入れてやる必要がある。
コマンド例:
Set-MsolUser -UserPrincipalName <ユーザーUPN> -StsRefreshTokensValidFrom (Get-Date)
ID管理システムによってはこのプロパティ値を能動的に設定する必要があるため、環境によっては注意する必要がある。
参考:
Federated users in Azure AD are forced to sign in frequently
<https://support.microsoft.com/en-us/help/4025960/federated-users-in-azure-ad-are-forced-to-sign-in-frequently>
※ 日本語のページは翻訳が無茶苦茶なので英語ページを見ましょう