TOPICS

Microsoft 365 のアプリケーションで頻繁にサインインが求められる場合の対処法 ( Microsoft Graph 版 )

対象

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 時間で失効することが確認されております。
この事象を解消するための手順を以下に記載します。

注意事項

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

image__8_.png

詳細手順

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

実行結果例 : 

Picture1.png

1.2. refreshTokensValidFromDateTime が空である場合、対象ユーザーに対して下記コマンドを実行いただくと、True  の応答が返り該当の属性にコマンド実行時の日時が設定されます。

"ユーザーID" には対象ユーザーの UserPrincipalName を入力してください。

Revoke-MgUserSignInSession -UserId "ユーザーID"

実行例 : 

対象ユーザーの UserPrincipalName が user@example.com の場合、コマンドは以下となります。

Revoke-MgUserSignInSession -UserId user@example.com

image__8_のコピー.png

1.3. 1.2. のコマンドを再実行し、対象ユーザーの refreshTokensValidFromDateTime 属性に値が設定されていることを確認します。

実行結果例 : 

image__8_のコピー-2.png

1.4. 以下のコマンドを実行し、Microsoft365 との接続を切断します。

Disconnect-MgGraph

2. 一括設定方法

2.1. 以下のコマンドを実行し、refreshTokensValidFromDateTime が空のユーザーのリストを確認します。

Get-MgBetaUser -All  | where{ $_.refreshTokensValidFromDateTime -eq $null }

Picture4.png

※ 対象となるユーザーが存在しない場合、一括設定を行う必要はございませんので、 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 モジュールのインストールより再度お試しください。

          
この記事は役に立ちましたか?