Поделиться через


Сопоставление атрибута certificateUserIds в идентификаторе Microsoft Entra

Пользовательские объекты в идентификаторе Microsoft Entra имеют атрибут с именем certificateUserIds.

  • Атрибут certificateUserIds имеет многозначное значение и может содержать до 10 значений.
  • Каждое значение не может превышать 1024 символов.
  • Каждое значение должно быть уникальным. После того как значение присутствует в одной учетной записи пользователя, его нельзя записать в другую учетную запись пользователя в том же клиенте Microsoft Entra.
  • Значение не должно быть в формате идентификатора электронной почты. Атрибут certificateUserIds может хранить неизменяемые имена субъектов-пользователей (UPN), такие как bob@woodgrove или bob@local.

Примечание.

Хотя каждое значение должно быть уникальным в идентификаторе Microsoft Entra, вы можете сопоставить один сертификат с несколькими учетными записями, реализуя несколько привязок пользователей. Дополнительные сведения см. в разделе "Несколько привязок имени пользователя".

Поддерживаемые шаблоны для идентификаторов пользователей сертификата

Значения, хранящиеся в 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
SKU 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

Для обновления сертификатовUserIds пользователи должны иметь по крайней мере роль администратора привилегированной проверки подлинности. Пользователи, доступные только для облака, могут использовать центр администрирования Microsoft Entra или Microsoft Graph для обновления сертификатовUserIds.

Синхронизированные пользователи должны иметь по крайней мере роль администратора гибридных удостоверений для обновления сертификатовUserIds. Только Microsoft Entra Connect можно использовать для обновления сертификатовUserIds путем синхронизации значения из локальной среды.

Примечание.

Администраторы Active Directory могут вносить изменения, влияющие на значение certificateUserIds в идентификаторе Microsoft Entra для любой синхронизированной учетной записи. Администраторы могут включать учетные записи с делегированными правами администратора через синхронизированные учетные записи пользователей или права администратора на серверах Microsoft Entra Connect.

Обновление certificateUserIds

Чтобы обновить certificateUserIds для пользователей, выполните следующие действия.

  1. Войдите в Центр администрирования Microsoft Entra как минимум администратор привилегированной проверки подлинности для пользователей только в облаке или как минимум гибридный администратор удостоверений для синхронизированных пользователей.

  2. Найдите и выберите "Все пользователи".

    Снимок экрана: тестовая учетная запись пользователя.

  3. Щелкните пользователя и нажмите кнопку "Изменить свойства".

  4. Рядом с сведениями о авторизации нажмите кнопку "Вид".

    Снимок экрана: просмотр сведений о авторизации.

  5. Щелкните "Изменить идентификаторы пользователей сертификата".

    Снимок экрана: изменение идентификаторов пользователей сертификата.

  6. Нажмите кнопку Добавить.

    Снимок экрана: добавление сертификатаUserIds.

  7. Введите значение и нажмите кнопку "Сохранить". Вы можете добавить до четырех значений, каждый из 120 символов.

    Снимок экрана: значение, которое нужно ввести для certificateUserIds.

Обновление certificateUserIds с помощью запросов Microsoft Graph

В следующих примерах показано, как использовать Microsoft Graph для поиска сертификатовUserIds и их обновления.

Поиск сертификатаUserIds

Авторизованные вызывающие пользователи могут выполнять запросы Microsoft Graph, чтобы найти всех пользователей с заданным значением certificateUserId. В объекте пользователя Microsoft Graph коллекция certificateUserIds хранится в свойстве authorizationInfo.

Чтобы получить certificateUserIds всех объектов пользователя:

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

Чтобы получить certificateUserIds для заданного пользователя с помощью ObjectId пользователя:

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

Вы также можете использовать not операторы и startsWith операторы для соответствия условию фильтра. Чтобы отфильтровать объект certificateUserIds, запрос должен содержать $count=true строку запроса, а заголовок ConsistencyLevel должен иметь значение eventual.

Обновление certificateUserIds

Выполните запрос PATCH, чтобы обновить сертификатUserIds для данного пользователя.

Текст запроса

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

Обновление certificateUserIds с помощью команд PowerShell

Для этой конфигурации можно использовать Microsoft Graph PowerShell.

  1. Запустите PowerShell с правами администратора.

  2. Установите и импортируйте пакет SDK Microsoft Graph PowerShell.

        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
    

Обновление сертификатовUserIds с помощью Microsoft Entra Connect

Microsoft Entra Connect поддерживает синхронизацию значений с certificateUserIds из среды локальная служба Active Directory. Локальная служба Active Directory поддерживает проверку подлинности на основе сертификатов и несколько привязок пользователей. Убедитесь, что используется последняя версия Microsoft Entra Connect.

Чтобы использовать эти методы сопоставления, необходимо заполнить атрибут altSecurityIdentities объектов пользователей в локальная служба Active Directory. Кроме того, после применения изменений проверки подлинности на основе сертификатов на контроллерах домена Windows, как описано в KB5014754, возможно, вы реализовали некоторые методы сопоставления без повторного использования (Type=strong) в соответствии с требованиями к принудительному применению привязки сертификатов локальной среды Active Directory.

Чтобы предотвратить ошибки синхронизации, убедитесь, что значения синхронизированы в одном из поддерживаемых форматов для certificateUserIds.

Прежде чем начать, убедитесь, что все учетные записи пользователей, синхронизированные из локальная служба Active Directory имеют:

  • 5 или меньше значений в атрибутах altSecurityIdentities

  • Значение с более чем 1024 символами

  • Повторяющиеся значения отсутствуют

    Тщательно рассмотрите, следует ли сопоставить один сертификат с несколькими учетными записями локальная служба Active Directory. Дополнительные сведения см. в разделе "Несколько привязок имени пользователя".

    Примечание.

    В определенных сценариях подмножество пользователей может иметь допустимое бизнес-обоснование для сопоставления одного сертификата с несколькими локальная служба Active Directory учетной записью. Просмотрите эти сценарии и при необходимости реализуйте отдельные методы сопоставления для сопоставления с несколькими учетными записями в локальная служба Active Directory и идентификаторе Microsoft Entra.

Рекомендации по текущей синхронизации certificateUserIds

  • Убедитесь, что процесс подготовки для заполнения значений в локальная служба Active Directory реализует правильную гигиену. Заполняются только значения, связанные с текущими допустимыми сертификатами.
  • Значения удаляются при истечении срока действия соответствующего сертификата или отмене.
  • Значения, превышающие 1024 символов, не заполняются.
  • Повторяющиеся значения не подготовлены.
  • Используйте Microsoft Entra Connect Health для мониторинга синхронизации.

Выполните следующие действия, чтобы настроить Microsoft Entra Connect для синхронизации userPrincipalName с certificateUserIds:

  1. На сервере Microsoft Entra Connect найдите и запустите редактор правил синхронизации.

  2. Нажмите кнопку "Направление" и нажмите кнопку "Исходящий".

    Снимок экрана: правило исходящей синхронизации.

  3. Найдите правило "Идентификатор записи Майкрософт" — удостоверение пользователя, нажмите кнопку "Изменить" и нажмите кнопку "Да ", чтобы подтвердить.

    Снимок экрана: удостоверение пользователя.

  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. Щелкните "Целевой атрибут", выберите certificateUserIds, щелкните "Источник", выберите userPrincipalName и нажмите кнопку "Сохранить".

    Снимок экрана: сохранение правила.

  2. Нажмите кнопку ОК для подтверждения.

Внимание

В предыдущих примерах атрибут userPrincipalName используется в качестве исходного атрибута в правиле преобразования. Можно использовать любой доступный атрибут с соответствующим значением. Например, некоторые организации используют атрибут почты. Дополнительные сложные правила преобразования см. в разделе Microsoft Entra Connect Sync: общие сведения о декларативных выражениях подготовки

Дополнительные сведения о декларативных выражениях подготовки см. в разделе Microsoft Entra Connect: Декларативные выражения подготовки.

Синхронизация атрибута altSecurityIdentities из Active Directory в Microsoft Entra certificateUserIds

Атрибут altSecurityIdentities не является частью набора атрибутов по умолчанию. Администратору необходимо добавить новый атрибут в объект person в Metaverse, а затем создать соответствующие правила синхронизации для ретрансляции этих данных в certificateUserIds в идентификаторе Microsoft Entra.

  1. Откройте конструктор метавселенной и выберите объект person. Чтобы создать атрибут alternativeSecurityId, нажмите кнопку "Создать атрибут". Выберите строку (не индексируемую), чтобы создать размер атрибута до 1024 символов, что является максимальной поддерживаемой длиной для certificateUserIds. Если выбрана строка (индексируемая), максимальный размер значения атрибута составляет 448 символов. Убедитесь, что выбрано многозначное значение.

    Снимок экрана: создание нового атрибута.

  2. Откройте конструктор метавселенной и выберите alternativeSecurityId, чтобы добавить его в объект person.

    Снимок экрана: добавление alternativeSecurityId в объект person.

  3. Создайте правило входящего синхронизации для преобразования из altSecurityIdentities в атрибут alternativeSecurityId.

    В правиле для входящего трафика используйте следующие параметры.

    Вариант Значение
    Имя. Описательное имя правила, например: в Active Directory — altSecurityIdentities
    Подключенная система Домен локальная служба Active Directory
    Тип объекта подключенной системы Пользователь
    Тип объекта метавселенной person
    Приоритет Выберите число в возрасте до 100, которое в настоящее время не используется

    Затем щелкните "Преобразования" и создайте прямое сопоставление с целевым атрибутом alternativeSecurityId из исходного атрибута altSecurityIdentities, как показано на следующем снимке экрана.

    Снимок экрана: преобразование из altSecurityIdentities в атрибут alternateSecurityId.

  4. Создайте правило исходящей синхронизации для преобразования из атрибута alternativeSecurityId в атрибут certificateUserIds в идентификаторе Microsoft Entra.

    Вариант Значение
    Имя. Описательное имя правила, например: out to Microsoft Entra ID — certificateUserIds
    Подключенная система Ваш домен Microsoft Entra
    Тип объекта подключенной системы Пользователь
    Тип объекта метавселенной person
    Приоритет Выберите большое число, которое в настоящее время не используется выше всех правил по умолчанию, например 150

    Затем щелкните преобразования и создайте прямое сопоставление с целевым сертификатом атрибутаUserIds из исходного атрибута alternativeSecurityId, как показано на следующем снимке экрана.

    Снимок экрана: правило исходящей синхронизации для преобразования из атрибута alternateSecurityId в certificateUserIds.

  5. Выполните синхронизацию, чтобы заполнить данные атрибутом certificateUserIds.

  6. Чтобы проверить успешность, просмотрите сведения о авторизации пользователя в идентификаторе Microsoft Entra.

    Снимок экрана: успешная синхронизация.

Чтобы сопоставить подмножество значений из атрибута altSecurityIdentities, замените преобразование на шаге 4 выражением. Чтобы использовать выражение, перейдите на вкладку "Преобразования" и измените параметр FlowType на Expression, целевой атрибут на certificateUserIds, а затем введите выражение в поле Source. В следующем примере фильтруются только значения, которые соответствуют полям сопоставления сертификатов SKI и SHA1PublicKey:

Снимок экрана: выражение.

Код выражения:

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

Администраторы могут фильтровать значения из altSecurityIdentities, которые соответствуют поддерживаемым шаблонам. Убедитесь, что конфигурация CBA обновлена для поддержки привязок имени пользователя, которые синхронизируются с certificateUserIds, чтобы включить проверку подлинности с помощью этих значений.

Следующие шаги