【Q&A】Microsoft社製アプリにて頻繁に再認証、または端末登録を求められる
事象
Microsoft の仕様により、フェデレーション(SSO 有効化)済みドメインに新規作成されたアカウントは、「refreshTokensValidFromDateTime」属性が空欄で作成されることに起因して、定期的に再認証が要求される動作となることを確認しています。
Microsoft Entra IDのフェデレーション ユーザーが頻繁にサインインすることを強制される<外部サイト>
Outlook や Teams などのインストールして利用するアプリは Cookie を保持できないため、再認証が要求された際、CloudGate UNO は過去に登録した端末情報を確認できません。そのため、個人端末の登録枠に空きがある場合には端末登録画面を表示し、空きが無い場合にはアクセスが拒否される、といったことが起こり得ます。
対応策
Poweshell で「refreshTokensValidFromDateTime」属性に値を設定します。
事前準備
【Q&A】Microsoft 365 連携:PowerShell によるコマンド実行の前提条件とトラブルシューティング の「前提条件」を参考に、必要なアプリやモジュール等をインストールしてください。
1. Powershell に接続する
Powershell を管理者として実行し、以下のコマンドを実行します。
Connect-MgGraph -Scopes "User.ReadWrite.All"
「グローバル管理者権限」を持つMicrosoft 365アカウント(@xxx.onmicrosoft.com)を入力して Entra ID(旧 Azure AD) にログインします。
※本画面が表示されない場合、以前に同様の作業が実施されており、その際の認証が切断されていなかった可能性があります。次のステップに進んで問題ありませんが、すべての作業が完了したら Entra IDから切断 するようお願いします。
2. 作業に必要なコマンドを取得する
以下のコマンドを実行し、β版のコマンドを取得します。
Get-Command Get-MgBetaUser
3. 対象アカウントを確認する(任意)
「refreshTokensValidFromDateTime」が未設定のアカウントを確認するコマンドです。作業前後で値の有無を確認されたい場合にご利用ください。
「sample@example.co.jp」部分をお客様のアカウントに修正し、以下のコマンドを実行してください。
Get-MgBetaUser -UserId sample@example.co.jp | select-object UserPrincipalName, refreshTokensValidFromDateTime
未設定の場合、「refreshTokensValidFromDateTime」が空欄で表示されます。
設定済みの場合、「refreshTokensValidFromDateTime」に日時が表示されます。
以下のコマンドを実行してください。
Get-MgBetaUser -All | where{ $_.refreshTokensValidFromDateTime -eq $null }
「refreshTokensValidFromDateTime」が未設定のアカウントのみ表示されます。
設定済みの場合、何も表示されません。
4. 「refreshTokensValidFromDateTime」属性に値を設定する
コマンドを実行して個別または一括で値を設定します。本作業が完了すると、対象アカウントはMicrosoft 365 から一度サインアウトされますので、再度アプリにサインオンして期待する動作となるかご確認ください。
「sample@example.co.jp」部分をお客様のアカウントに修正し、以下のコマンドを実行してください。
Revoke-MgUserSignInSession -UserId sample@example.co.jp
以下のコマンドを実行し、「refreshTokensValidFromDateTime」が未設定のユーザー全てに値を設定します。
foreach($user in Get-MgBetaUser -All | where{ $_.refreshTokensValidFromDateTime -eq $null }){Revoke-MgUserSignInSession -UserId $user.id}
特定のドメインユーザーのみを対象とされたい場合、以下「example.co.jp」部分をご希望のドメインに変更のうえ実行してください。
foreach($user in Get-MgBetaUser -All | where{ $_.refreshTokensValidFromDateTime -eq $null } | where{ $_.UserPrincipalName -like ( "*@example.com" ) }){Revoke-MgUserSignInSession -UserId $user.id}
正しく値が設定されたかどうか確認するには、3. 対象アカウントを確認する(任意) の「アカウント個別に確認するコマンド」を実行してください。
Entra ID から切断する(推奨)
「グローバル管理者権限」を持つ Microsoft 365 アカウントで Entra ID にログインしている状態は維持されてしまうようですので、作業の都度切断していただくことを強く推奨します。
切断するには下記のコマンドを実行します。
Disconnect-MgGraph