対象
HENNGE Access Control から Microsoft 365 へ HENNGE Access Control Directory Sync (クラウド版)を使用したユーザー同期を行うお客様が対象です。
目的
HENNGE Access Control から Microsoft 365 へ HENNGE Access Control Directory Sync(クラウド版) を使用してユーザーを同期する構成で利用されている場合、フェデレーション後に作成されたユーザーにおいては、Microsoft 365 の関連アプリケーションにおいて頻繁にサインインが求められます。
これはフェデレーションされた環境において、 HENNGE Access Control Directory Sync(クラウド版) が Microsoft365 にユーザーを作成する際に、ユーザーの属性 refreshTokensValidFromDateTime に値を設定できないことに起因しており、該当の属性に値が設定されていない場合、Microsoft 365 のアプリケーションの更新トークンは 12 時間で失効することが確認されております。
この事象を解消するための手順を本記事に記載します。
※ 2023 年 6 月に行われた製品アップデートにより、HENNGE Access Control から Microsoft365 に対し新たにユーザーが追加された場合、該当の属性に自動で値が設定されるようになりました。詳細につきましては、次の弊社記事をご参照ください。
リリース情報:[HENNGE Access Control] 2023年6月(クラウド版ユーザー同期ツールによる特定属性の入力)
注意事項
1. 本記事の内容は 2024 年 1 月時点での製品仕様、および Microsoft 365 の仕様をもとにしたものであり、以後予告なく変更される場合があります。
※ 特に、記事中の refreshTokensValidFromDateTime の値を確認するコマンドは現在Microsoft社からベータ版のみが提供されており、今後コマンドが変更となる可能性がございます。
2. 本手順には Microsoft 365 全体管理者アカウントを使用します。
3. 1.3. 及び 2.3. のコマンド実行時に、対象ユーザーの再ログインが必要となります。
4. Microsoft Graph PowerShell v2.0 にて動作検証を実施しております。
※ バージョンの詳細に関しましては下記 Microsoft 社記事よりご確認ください。
Microsoft Graph PowerShell v2.0 でサポートされた認証方法と変更点
事前確認事項
1. Microsoft Graph PowerShell SDK モジュールが PowerShell にインストールされている必要があります。
あらかじめ以下の内容が完了していることをご確認ください。
Microsoft Graph PowerShell SDK のインストール
2. 以下のコマンドを実行し、Microsoft Graph PowerShell Beta Module をインストールします。
※ インストールに時間を要する可能性がございます。
Install-Module Microsoft.Graph.Beta
3. PowerShell を管理者権限で開き、以下のコマンドを実行して Microsoft 365 へ接続してください。
Connect-MgGraph -Scopes "User.ReadWrite.All"
※ コマンドを実行するとブラウザで Microsoft 365 ログイン画面が表示されるので、Microsoft 365 全体管理者のアカウントでログインしてください。
※ コマンド の実行結果に赤字でエラーが出力されている場合は、下記をご参照ください。
Microsoft Graph PowerShell を実行時、TLS 1.0 / TLS 1.1 エラーの対処方法
4. 以下のコマンドを実行し、Beta 版のGetMgUserコマンドを取得します。
※ 実行しない場合でも問題なく動作する可能性がありますが、念のためご実施ください。
Get-Command Get-MgBetaUser
詳細手順
1. 個別ユーザーへの設定方法
1.1. 以下のコマンドを実行し、対象ユーザーに refreshTokensValidFromDateTime に値が設定されていないことを確認します。
"ユーザーID" には対象ユーザーの UserPrincipalName を入力してください。
Get-MgBetaUser -UserId "ユーザーID" | select-object UserPrincipalName, refreshTokensValidFromDateTime
実行例 :
対象ユーザーの UserPrincipalName が user@example.com の場合、コマンドは以下となります。
Get-MgBetaUser -UserId user@example.com | select-object UserPrincipalName, refreshTokensValidFromDateTime
実行結果例 :
1.2. refreshTokensValidFromDateTime が空である場合、対象ユーザーに対して下記コマンドを実行いただくと、True の応答が返り該当の属性にコマンド実行時の日時が設定されます。
"ユーザーID" には対象ユーザーの UserPrincipalName を入力してください。
Revoke-MgUserSignInSession -UserId "ユーザーID"
実行例 :
対象ユーザーの UserPrincipalName が user@example.com の場合、コマンドは以下となります。
Revoke-MgUserSignInSession -UserId user@example.com
1.3. 1.2. のコマンドを再実行し、対象ユーザーの refreshTokensValidFromDateTime 属性に値が設定されていることを確認します。
実行結果例 :
1.4. 以下のコマンドを実行し、Microsoft365 との接続を切断します。
Disconnect-MgGraph
2. 一括設定方法
2.1. 以下のコマンドを実行し、refreshTokensValidFromDateTime が空のユーザーのリストを確認します。
Get-MgBetaUser -All | where{ $_.refreshTokensValidFromDateTime -eq $null }
※ 対象となるユーザーが存在しない場合、一括設定を行う必要はございませんので、 2.4. に記載の方法で Microsoft365 との接続を切断してください。
※ 特定ドメインのユーザーのみを対象とする場合、次のコマンドをご参照いただき、example.com の箇所を特定ドメインに変更の上、実行をお願いいたします。
Get-MgBetaUser -All | where{ $_.refreshTokensValidFromDateTime -eq $null } | where{ $_.UserPrincipalName -like ( "*@example.com" ) }
2.2. 以下のコマンドを実行し、refreshTokensValidFromDateTime が空のユーザーそれぞれに対し、該当の属性に値を設定します。
※ 対象となるユーザーの数だけ、画面上で True の応答が表示されます
foreach($user in Get-MgBetaUser -All | where{ $_.refreshTokensValidFromDateTime -eq $null }){Revoke-MgUserSignInSession -UserId $user.id}
※ 特定ドメインのユーザーのみを対象とする場合、次のコマンドをご参照いただき、example.com の箇所を特定ドメインに変更の上、実行をお願いいたします。
foreach($user in Get-MgBetaUser -All | where{ $_.refreshTokensValidFromDateTime -eq $null } | where{ $_.UserPrincipalName -like ( "*@example.com" ) }){Revoke-MgUserSignInSession -UserId $user.id}
2.3. 2.1. のコマンドを再実行し、refreshTokensValidFromDateTime が空であるユーザーが表示されない事を確認します。
2.4. 以下のコマンドを実行し、Microsoft365 との接続を切断します。
Disconnect-MgGraph
3. コマンドが実行できずエラーになる場合
Microsoft Graph 及び、Microsoft Graph.Beta モジュールのアンインストールを実施ください。
※ アンインストールすることでご環境に影響が出る場合はご実施をお控えください。
下記両方のコマンドを実施します。
Uninstall-Module -Name Microsoft.Graph -AllVersions
Uninstall-Module -Name Microsoft.Graph.Beta -AllVersions
実行後、事前確認事項 の Microsoft Graph PowerShell SDK モジュールのインストールより再度お試しください。