共用方式為


對應至 Microsoft Entra ID 中的 certificateUserIds 屬性

Microsoft Entra ID 中的使用者物件具有名為 certificateUserIds 的屬性。

  • certificateUserIds 屬性為多重值,最多可保留 10 個值。
  • 每個值不可超過 1024 個字元。
  • 每個值不得重複。 當一個值存在於某個使用者帳戶上時,該值就無法寫入相同 Microsoft Entra 租用戶中的其他任何使用者帳戶。
  • 值不需使用電子郵件識別碼格式。 certificateUserIds 屬性可儲存不可路由的使用者主體名稱 (UPN),例如 bob@woodgrove 或 bob@local

注意

雖然每個值在 Microsoft Entra ID 中不得重複,但是您可以實作多個使用者名稱繫結,將單一憑證對應至多個帳戶。 如需詳細資訊,請參閱多個使用者名稱繫結

憑證使用者識別碼支援的模式

儲存在 certificateUserIds 中的值應採用下表中所述的格式。 X509:<對應>前置詞會區分大小寫。

憑證對應欄位 certificateUserIds 中的值範例
主體名稱 X509:<PN>bob@woodgrove.com
主體名稱 X509:<PN>bob@woodgrove
RFC822Name X509:<RFC822>user@woodgrove.com
IssuerAndSubject X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<S>DC=com,DC=contoso,OU=UserAccounts,CN=mfatest
主體 X509:<S>DC=com,DC=contoso,OU=UserAccounts,CN=mfatest
SKI X509:<SKI>aB1cD2eF3gH4iJ5kL6mN7oP8qR
SHA1PublicKey X509:<SHA1-PUKEY>cD2eF3gH4iJ5kL6mN7oP8qR9sT
IssuerAndSerialNumber X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>eF3gH4iJ5kL6mN7oP8qR9sT0uV
若要取得序號的正確值,請執行此命令,並儲存 certificateUserIds 中顯示的值:
語法:
Certutil –dump –v [~certificate path~] >> [~dumpFile path~]
範例:
certutil -dump -v firstusercert.cer >> firstCertDump.txt

更新 certificateUserIds 的角色

僅限雲端的使用者至少必須具有特殊權限驗證管理員角色,才能更新 certificateUserIds。 僅限雲端的使用者可以使用 Microsoft Entra 系統管理中心或 Microsoft Graph 來更新 certificateUserIds。

同步的使用者至少必須具有混合式身分識別管理員角色,才能更新 certificateUserIds。 只有 Microsoft Entra Connect 可透過同步內部部署的值來更新 certificateUserIds。

注意

Active Directory 管理員可以進行變更,以影響 Microsoft Entra ID 中任何同步帳戶的 certificateUserIds 值。 管理員可以包含對已同步使用者帳戶具有委派系統管理權限的帳戶,或對 Microsoft Entra Connect 伺服器具有系統管理權限的帳戶。

更新 certificateUserIds

使用下列步驟來更新使用者的 certificateUserIds:

  1. 登入 Microsoft Entra 系統管理中心,若是僅限雲端的使用者,以至少為特殊權限驗證管理員的身分登入,若是同步的使用者,則以至少為混合式身分識別管理員的身分登入。

  2. 搜尋並選取 [所有使用者]

    測試使用者帳戶的螢幕擷取畫面。

  3. 按一下使用者,然後按一下 [編輯屬性]

  4. 按一下 [授權資訊] 旁的 [檢視]

    檢視授權資訊的螢幕擷取畫面。

  5. 按一下 [編輯憑證使用者識別碼]

    編輯憑證使用者識別碼的螢幕擷取畫面。

  6. 按一下新增

    如何新增 certificateUserIds 的螢幕擷取畫面。

  7. 輸入值,然後按一下 [儲存]。 您最多可以新增四個值,每個值 120 個字元。

    針對 certificateUserIds 輸入值的螢幕擷取畫面。

使用 Microsoft Graph 查詢來更新 certificateUserIds

下列範例示範如何使用 Microsoft Graph 來查閱 certificateUserIds 並將其更新。

查閱 certificateUserIds

授權的呼叫端可執行 Microsoft Graph 查詢,以尋找具有指定 certificateUserId 值的所有使用者。 在 Microsoft Graph 使用者物件上,certificateUserIds 的集合會儲存在 authorizationInfo 屬性中。

若要擷取所有使用者物件的 certificateUserIds:

GET https://graph.microsoft.com/v1.0/users?$select=authorizationinfo
ConsistencyLevel: eventual

若要依使用者的 ObjectId 擷取指定使用者的 certificateUserIds:

GET https://graph.microsoft.com/v1.0/users/{user-object-id}?$select=authorizationinfo
ConsistencyLevel: eventual

若要擷取 certificateUserIds 中具有特定值的使用者物件:

GET https://graph.microsoft.com/v1.0/users?$select=authorizationinfo&$filter=authorizationInfo/certificateUserIds/any(x:x eq 'X509:<PN>user@contoso.com')&$count=true
ConsistencyLevel: eventual

您也可以使用 notstartsWith 運算子來比對篩選條件。 若要根據 certificateUserIds 物件進行篩選,要求中必須包含 $count=true 查詢字串,而且 ConsistencyLevel 標頭必須設定為 eventual

更新 certificateUserIds

執行 PATCH 要求來更新指定使用者的 certificateUserIds。

要求本文

PATCH https://graph.microsoft.com/v1.0/users/{user-object-id}
Content-Type: application/json
{
    "authorizationInfo": {
        "certificateUserIds": [
            "X509:<PN>123456789098765@mil"
        ]
    }
}

使用 PowerShell 命令更新 certificateUserIds

針對此設定,您可以使用 Microsoft Graph PowerShell

  1. 以系統管理員權限啟動 PowerShell。

  2. 安裝並匯入 Microsoft Graph PowerShell SDK。

        Install-Module Microsoft.Graph -Scope AllUsers
        Import-Module Microsoft.Graph.Authentication
        Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    
  3. 連線到租用戶並接受全部項目。

       Connect-MGGraph -Scopes "Directory.ReadWrite.All", "User.ReadWrite.All" -TenantId <tenantId>
    
  4. 列出指定使用者的 certificateUserIds 屬性。

      $results = Invoke-MGGraphRequest -Method get -Uri 'https://graph.microsoft.com/v1.0/users/<userId>?$select=authorizationinfo' -OutputType PSObject -Headers @{'ConsistencyLevel' = 'eventual' }
      #list certificateUserIds
      $results.authorizationInfo
    
  5. 使用 certificateUserIds 值建立變數。

      #Create a new variable to prepare the change. Ensure that you list any existing values you want to keep as this operation will overwrite the existing value
      $params = @{
            authorizationInfo = @{
                  certificateUserIds = @(
                  "X509:<SKI>gH4iJ5kL6mN7oP8qR9sT0uV1wX", 
                  "X509:<PN>user@contoso.com"
                  )
            }
      }
    
  6. 更新 certificateUserIds 屬性。

       $results = Invoke-MGGraphRequest -Method patch -Uri 'https://graph.microsoft.com/v1.0/users/<UserId>/?$select=authorizationinfo' -OutputType PSObject -Headers @{'ConsistencyLevel' = 'eventual' } -Body $params
    

使用使用者物件更新 certificateUserIds

  1. 取得使用者物件。

      $userObjectId = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
      $user = Get-MgUser -UserId $userObjectId -Property AuthorizationInfo
    
  2. 更新使用者物件的 certificateUserIds 屬性。

       $user.AuthorizationInfo.certificateUserIds = @("X509:<SKI>iJ5kL6mN7oP8qR9sT0uV1wX2yZ", "X509:<PN>user1@contoso.com") 
       Update-MgUser -UserId $userObjectId -AuthorizationInfo $user.AuthorizationInfo
    

使用 Microsoft Entra Connect 更新 certificateUserIds

Microsoft Entra Connect 支援將值從內部部署的 Active Directory 環境同步至 certificateUserIds。 內部部署的 Active Directory 支援憑證式驗證和多個使用者名稱繫結。 請確定您使用最新版本的 Microsoft Entra Connect

若要使用這些對應方法,您必須在內部部署的 Active Directory 中填入使用者物件的 altSecurityIdentities 屬性。 此外,在 Windows 網域控制器上套用憑證型驗證變更之後 (如 KB5014754 所述),您可能已實作一些不可重複使用的對應方法 (Type=strong),以符合內部部署 Active Directory 的高強度憑證繫結強制需求。

若要防止同步錯誤,請確定同步的值遵循 certificateUserIds 的其中一種支援格式。

開始之前,請確定從內部部署 Active Directory 同步的所有使用者帳戶符合下列情況:

  • 其 altSecurityIdentities 屬性中的值不超過 5 個

  • 沒有超過 1024 個字元的值

  • 沒有重複值

    請仔細考慮重複的值是否意在將單一憑證對應至多個內部部署的 Active Directory 帳戶。 如需詳細資訊,請參閱多個使用者名稱繫結

    注意

    在特定案例中,一小部分使用者可能會有適當的業務理由,將單一憑證對應至一個以上的內部部署 Active Directory 帳戶。 請檢閱這些案例,並視需要實作個別的對應方法,以同時對應至內部部署 Active Directory 和 Microsoft Entra ID 中的多個帳戶。

持續同步 certificateUserIds 的考量

  • 請確定在內部部署 Active Directory 中填入值的佈建程序會實作適當的保護措施。 只會填入與目前有效憑證相關聯的值。
  • 這些值會在對應的憑證過期或撤銷時移除。
  • 不會填入大於 1024 個字元的值。
  • 不會佈建重複的值。
  • 使用 Microsoft Entra Connect Health 來監視同步處理。

請遵循下列步驟來設定 Microsoft Entra Connect,將 userPrincipalName 同步至 certificateUserIds:

  1. 在 Microsoft Entra Connect 伺服器上,尋找並啟動 [同步處理規則編輯器]

  2. 按一下 [方向],然後按一下 [輸出]

    輸出同步處理規則的螢幕擷取畫面。

  3. 尋找 [輸出至 Microsoft Entra ID – 使用者身分識別] 規則,按一下 [編輯],然後按一下 [是] 來確認。

    使用者身分識別的螢幕擷取畫面。

  4. 在 [優先順序] 欄位中輸入較高數字,然後按 [下一步]

    優先順序值的螢幕擷取畫面。

  5. 按一下 [轉換]>[新增轉換]。 您可能需要向下捲動轉換清單,才能建立新的轉換。

Synchronize X509:<PN>PrincipalNameValue

若要同步處理 X509:<PN>PrincipalNameValue,請建立輸出同步處理規則,然後在流程類型中選擇 [運算式]。 將目標屬性選擇為 certificateUserIds,然後在來源欄位中新增下列運算式。 如果您的來源屬性不是 userPrincipalName,您可據以變更運算式。

"X509:<PN>"&[userPrincipalName]

如何同步處理 x509 的螢幕擷取畫面。

同步處理 X509:<RFC822>RFC822Name

若要同步處理 X509:<RFC822>RFC822Name,請建立輸出同步處理規則,然後在流程類型中選擇 [運算式]。 將目標屬性選擇為 certificateUserIds,然後在來源欄位中新增下列運算式。 如果您的來源屬性不是 userPrincipalName,您可據以變更運算式。

"X509:<RFC822>"&[userPrincipalName]

如何同步處理 RFC822Name 的螢幕擷取畫面。

  1. 按一下 [目標屬性]、選取 [certificateUserIds]、按一下 [來源]、選取 [userPrincipalName],然後按一下 [儲存]

    如何儲存規則的螢幕擷取畫面。

  2. 按一下 [ 確定 ] 以確認。

重要

上述範例使用 userPrincipalName atribute 作為轉換規則中的來源屬性。 您可以使用任何可用的屬性搭配適當的值。 例如,某些組織會使用郵件屬性。 關於更複雜的轉換規則,請參閱 Microsoft Entra Connect 同步:了解宣告式佈建運算式

如需宣告式佈建運算式的詳細資訊,請參閱 Microsoft Entra Connect:宣告式佈建運算式

將 altSecurityIdentities 屬性從 Active Directory 同步至 Microsoft Entra certificateUserIds

altSecurityIdentities 屬性不是預設屬性集的一部分。 系統管理員必須將新的屬性新增至 Metaverse 中的 person 物件,然後建立適當的同步規則,以將此資料轉送至 Microsoft Entra ID 中的 certificateUserIds。

  1. 開啟 Metaverse Designer,然後選取 person 物件。 若要建立 alternativeSecurityId 屬性,請按一下 [新增屬性]。 選取 [字串 (不可編製索引)] 以建立大小最多 1024 個字元的屬性,這是 certificateUserIds 可支援的長度上限。 如果您選取 [字串 (可編製索引)],屬性值的大小上限為 448 個字元。 請務必選取 [多重值]

    如何建立新屬性的螢幕擷取畫面。

  2. 開啟 Metaverse 設計工具,然後選取 alternativeSecurityId 將其新增至 person 物件。

    如何將 alternativeSecurityId 新增至 person 物件的螢幕擷取畫面。

  3. 建立輸入同步處理規則,以從 altSecurityIdentities 轉換為 alternativeSecurityId 屬性。

    在輸入規則中,使用下列選項。

    選項
    名稱 規則的描述性名稱,例如:In from Active Directory - altSecurityIdentities
    連線的系統 內部部署的 Active Directory 網域
    連線的系統物件類型 使用者
    Metaverse 物件類型 person
    優先順序 選擇目前未使用且低於 100 的數字

    然後按一下 [轉換],並從來源屬性 altSecurityIdentities 建立目標屬性 alternativeSecurityId 的直接對應,如下列螢幕擷取畫面所示。

    如何從 altSecurityIdentities 轉換為 alternateSecurityId 屬性的螢幕擷取畫面。

  4. 建立輸出同步處理規則,從 alternativeSecurityId 屬性轉換成 Microsoft Entra ID 中的 certificateUserIds 屬性。

    選項
    名稱 規則的描述性名稱,例如:Out to Microsoft Entra ID - certificateUserIds
    連線的系統 您的 Microsoft Entra 網域
    連線的系統物件類型 使用者
    Metaverse 物件類型 person
    優先順序 選擇目前未使用且高於所有預設規則的較高數字,例如 150

    然後按一下 [轉換],並從來源屬性 alternativeSecurityId 建立目標屬性 certificateUserIds 的直接對應,如下列螢幕擷取畫面所示。

    從 alternateSecurityId 屬性轉換為 certificateUserIds 的輸出同步處理規則的螢幕擷取畫面。

  5. 執行同步,將資料填入 certificateUserIds 屬性。

  6. 若要確認是否成功,請在 Microsoft Entra ID 中檢視使用者的授權資訊。

    成功同步的螢幕擷取畫面。

若要對應 altSecurityIdentities 屬性中的部分值,請將步驟 4 中的轉換取代為運算式。 若要使用運算式,請繼續移至 [轉換] 索引標籤,並將 FlowType 選項變更為運算式,將目標屬性變更為 certificateUserIds,然後將運算式輸入 [來源] 欄位。 下列範例只會篩選符合 SKI 和 SHA1PublicKey 憑證對應欄位的值:

運算式的螢幕擷取畫面。

運算式程式碼

IIF(IsPresent([alternativeSecurityId]),
                Where($item,[alternativeSecurityId],BitOr(InStr($item, "X509:<SKI>"),InStr($item, "X509:<SHA1-PUKEY>"))>0),[alternativeSecurityId]
)

系統管理員可以從 altSecurityIdentities 中篩選符合所支援模式的值。 請確定 CBA 設定已更新,可支援正在同步至 certificateUserIds 的使用者名稱繫結,以使用這些值啟用驗證。

下一步