對應至 Microsoft Entra ID 中的 certificateUserIds 屬性

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

  • certificateUserIds 屬性為多重值,最多可保留 5 個值。
  • 每個值不可超過 1024 個字元。
  • 每個值都必須是唯一的。 一旦某個用戶帳戶上有一個值,就無法寫入相同 Entra ID 租使用者中的其他任何用戶帳戶。
  • 值不需要以電子郵件識別碼格式顯示。 certificateUserIds 屬性可以儲存不可路由的用戶主體名稱(UPN),例如 bob@woodgrovebob@local

注意

雖然每個值在 Entra ID 中都必須是唯一的,但您可以藉由實作多個使用者名稱系結,將單一憑證對應至多個帳戶。 如需詳細資訊,請參閱 多個用戶名稱系結

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

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

憑證對應欄位 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
滑雪 X509:<SKI>123456789abcdef
SHA1PublicKey X509:<SHA1-PUKEY>123456789abcdef
IssuerAndSerialNumber X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>b24134139f069b49997212a86ba0ef48
若要取得序號的正確值,請執行此命令並儲存 certificateUserIds 中顯示的值:
語法:
Certutil –dump –v [~certificate path~] >> [~dumpFile path~]
範例:
certutil -dump -v firstusercert.cer >> firstCertDump.txt

更新 certificateUserIds 的角色

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

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

注意

Active Directory 系統管理員可以針對任何同步處理的帳戶,進行會影響 Microsoft Entra ID 中 certificateUserIds 值的變更。 管理員 istrators 可以包含具有已同步處理用戶帳戶之委派系統管理許可權的帳戶,或 Microsoft Entra 連線 伺服器的系統管理許可權。

更新 certificateUserIds

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

  1. 至少以僅限雲端使用者的 Privileged Authentication 管理員 istrator 身分登入 Microsoft Entra 系統管理中心,或至少是同步使用者的混合式身分識別 管理員 istrator

  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 擷取指定使用者的 certificateUserId:

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>eec6b88788d2770a01e01775ce71f1125cd6ad0f", 
                  "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 = "6b2d3bd3-b078-4f46-ac53-f862f35e10b6"
      $user = Get-MgUser -UserId $userObjectId -Property AuthorizationInfo
    
  2. 更新用戶物件的 certificateUserIds 屬性。

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

使用 Microsoft Entra 連線 更新 certificateUserIds

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

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

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

開始之前,請確定從 內部部署的 Active Directory 同步處理的所有用戶帳戶都有:

  • 其altSecurityIdentities屬性中的5或更少值

  • 沒有超過1024個字元的值

  • 沒有重複的值

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

    注意

    在特定案例中,用戶子集可能有有效的商務理由,將單一憑證對應至多個 內部部署的 Active Directory 帳戶。 請檢閱這些案例,並視需要實作不同的對應方法,以同時對應至 內部部署的 Active Directory 和 Entra 標識碼中的多個帳戶。

持續同步處理 certificateUserIds 的考慮

  • 請確定在 內部部署的 Active Directory 中填入值的布建程式會實作適當的衛生。 只會填入與目前有效憑證相關聯的值。
  • 當對應的憑證過期或撤銷時,會移除值。
  • 未填入大於 1024 個字元的值。
  • 不會布建重複的值。
  • 使用 Microsoft Entra 連線 Health 來監視同步處理。

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

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

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

    輸出同步處理規則的螢幕快照。

  3. 尋找排除至 Microsoft Entra ID – 使用者身分識別的規則,按兩下 [編輯],然後按兩下 [] 以確認。

    使用者身分識別的螢幕快照。

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

    優先順序值的螢幕快照。

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

同步處理 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. 依序按兩下 [ 目標屬性]、[ 憑證][用戶標識符]、[ 來源]、[ userPrincipalName],然後按兩下 [ 儲存]。

    如何儲存規則的螢幕快照。

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

重要

上述範例使用 userPrincipalName atribute 做為轉換規則中的來源屬性。 您可以使用任何可用的屬性搭配適當的值。 例如,某些組織會使用郵件屬性。 如需更複雜的轉換規則,請參閱 Microsoft Entra 連線 Sync:瞭解宣告式布建運算式

如需宣告式布建表達式的詳細資訊,請參閱 Microsoft Entra 連線:宣告式布建表達式

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

altSecurityIdentities 屬性不是預設屬性集的一部分。 系統管理員必須將新的屬性新增至 Metaverse 中的 person 對象,然後建立適當的同步處理規則,以將此數據轉譯至 Entra ID 中的 certificateUserIds。

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

    如何建立新屬性的螢幕快照。

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

    如何將alternativeSecurityId新增至person對象的螢幕快照。

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

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

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

    然後按兩下 [轉換],然後從來源屬性 altSecurityIdentities 建立目標屬性 alternativeSecurityId 的直接對應,如下列螢幕快照所示。

    如何從altSecurityIdentities轉換為alternateSecurityId屬性的螢幕快照。

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

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

    然後按兩下 [轉換],然後從來源屬性 alternativeSecurityId 建立目標屬性憑證UserId 的直接對應,如下列螢幕快照所示。

    從alternateSecurityId屬性轉換成 certificateUserIds 的輸出同步處理規則螢幕快照。

  5. 執行同步處理,將數據填入 certificateUserIds 屬性。

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

    成功同步處理的螢幕快照。

若要對應altSecurityIdentities屬性中的值子集,請將步驟4中的轉換取代為Expression。 若要使用 Expression,請繼續進行 [轉換 ] 索引標籤,並將 FlowType 選項變更為 Expression、certificateUserIds 的目標屬性,然後將表達式輸入 [來源] 字段。 下列範例只會篩選符合 SKI 和 SHA1PublicKey 憑證對應字段的值:

表達式的螢幕快照。

運算式程式代碼

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

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

下一步