【Q&A】Microsoft社製アプリにて頻繁に再認証、または端末登録を求められる
事象
Microsoft の仕様により、フェデレーション(SSO 有効化)済みドメインに新規作成されたアカウントは、「refreshTokensValidFromDateTime」属性が空欄で作成されることに起因して、定期的に再認証が要求される動作となることを確認しています。以下 Microsoft のページもご参考ください。
Microsoft Entra IDのフェデレーション ユーザーが頻繁にサインインすることを強制される<外部サイト>
Outlook や Teams などのインストールして利用するアプリは Cookie を保持できないため、再認証が要求された際、CloudGate UNO は過去に登録した端末情報を確認できません。そのため、個人端末の登録枠に空きがある場合には端末登録画面を表示し、空きが無い場合にはアクセスが拒否される、といったことが起こり得ます。
対応策
Poweshell で「refreshTokensValidFromDateTime」属性に値を設定します。
事前準備
コマンドを実行するWindows端末に以下2つのモジュールがインストールされている必要があります。
- Microsoft Graph PowerShell SDK
Microsoft 365 連携:SSO を有効にする の「Microsoft Graph PowerShell SDK をインストールする」を実施してください。 - Microsoft Graph Beta
上記に続けて以下のコマンドを実施してください。
Install-Module Microsoft.Graph.Beta
1. Powershell に接続する
Powershell を管理者として実行し、以下のコマンドを実行します。
Connect-MgGraph -Scopes "User.ReadWrite.All"
・PowerShell 5.1 以上
・.NET Framework 4.7.2 以上
・PowerShell スクリプト実行ポリシーの設定値 「remote signed」
「グローバル管理者権限」を持つMicrosoft 365アカウント(@xxx.onmicrosoft.com)を入力して Entra ID(旧 Azure AD) にログインします。
本手順が不要な場合もあります。サインインを求められなかったら次の手順に進んでください。
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. 対象アカウントを確認する(任意) の「アカウント個別に確認するコマンド」を実行してください。
5. Poweshell から切断する
作業が完了しましたら、以下のコマンドを実行しPowershellからMicrosoft 365アカウントの接続を切断します。
Disconnect-MgGraph