對象
適用對象為使用 HENNGE Access Control Directory Sync 從 HENNGE Access Control 同步使用者至 Microsoft 365 的客戶。
目的
當使用 HENNGE Access Control Directory Sync 從 HENNGE Access Control 同步使用者至 Microsoft 365 並進行 Federation 後,新建立的使用者在 Microsoft 365 相關應用程式中需要頻繁登入。
這是由於在 Federation 環境中,HENNGE Access Control Directory Sync 在將使用者建立到 Microsoft 365 時,無法設定使用者屬性 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. 必須在 PowerShell 中安裝 Microsoft Graph PowerShell SDK 模組。
請確認以下內容已完成。
安裝 Microsoft Graph PowerShell SDK
2. 執行以下命令以安裝 Microsoft Graph PowerShell Beta 模組。
※ 安裝可能需要一些時間。
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 的回應。
請輸入對應使用者的 UserPrincipalName 於 "使用者ID" 中。
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 模組安裝重新嘗試。