Microsoft Entra ID の certificateUserIds 属性へのマッピング

Microsoft Entra ID のユーザー オブジェクトは、certificateUserIds という名前の属性を持つことができます。

  • certificateUserIds 属性は複数値に対応しており、最大 5 つの値を保持できます。
  • 各値の受け付ける文字数は 1024 文字以下です。
  • それぞれが一意の値である必要があります。 あるユーザー アカウントに値が存在すると、同じ Entra ID テナント内の他のユーザー アカウントにその値を書き込むことはできません。
  • この値は電子メール ID 形式である必要はありません。 certificateUserIds 属性には、bob@woodgrovebob@local などのルーティング不可能なユーザー プリンシパル名 (UPN) を格納できます。

Note

各値は Entra ID 内で一意である必要がありますが、複数のユーザー名バインディングを実装することで、1 つの証明書を複数のアカウントにマップできます。 詳細については、「複数の環境の使用」を参照してください。

証明書ユーザー ID でサポートされるパターン

certificateUserIds に格納される値は、次の表で説明する形式にする必要があります。 X509: <マッピング> プレフィックスでは大文字と小文字が区別されます。

証明書マッピング フィールド certificateUserIds の値の例
PrincipalName X509:<PN>bob@woodgrove.com
PrincipalName 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>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 を更新するロール

certificateUserIds を更新するには、クラウド専用ユーザーに少なくとも特権認証管理者ロールが必要です。 クラウド専用ユーザーの場合は、Microsoft Entra 管理センター または Microsoft Graph を使用して certificateUserIds の値を更新できます。

同期されたユーザーが certificateUserIds を更新するには、少なくともハイブリッド ID 管理者ロールを持っている必要があります。 オンプレミスから値を同期して certificateUserIds を更新するには、Microsoft Entra Connect のみが使用できます。

Note

Active Directory 管理者は、同期されたアカウントの Microsoft Entra ID の certificateUserIds 値に影響を与える変更を行うことができます。 管理者は、同期されたユーザー アカウントに対する代理管理特権を持つアカウント、または Microsoft Entra Connect サーバーに対する管理者権限を含めることができます。

certificateUserIds を更新する

ユーザーの certificateUserIds を更新するには、次の手順に従います。

  1. 最低限、クラウド専用ユーザーの特権認証管理者、または同期済みユーザーのハイブリッド ID 管理者のアクセス権で、Microsoft Entra 管理センターにサインインします。

  2. [すべてのユーザー] を検索して選択します。

    テスト ユーザー アカウントのスクリーンショット。

  3. ユーザーをクリックし、[プロパティの編集] をクリックします。

  4. [認可情報] の横にある [表示] をクリックします。

    [View authorization info](承認情報の表示) のスクリーンショット。

  5. [Edit certificate user IDs](証明書ユーザー ID の編集) をクリックします。

    証明書ユーザー ID の編集のスクリーンショット。

  6. 追加をクリックします。

    certificateUserIds を追加する方法のスクリーンショット。

  7. 値を入力し、[保存] をクリックします。 最大 4 つの値 (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

not および startsWith 演算子を使用して、フィルター条件を一致させることもできます。 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 Connect を使用して certificateUserIds を更新する

Microsoft Entra Connect では、オンプレミスの Active Directory環境から certificateUserIds への値の同期がサポートされています。 オンプレミスの Active Directory では、証明書ベースの認証と複数のユーザー名バインディングがサポートされています。 最新バージョンの Microsoft Entra Connect を使用していることを確認します。

これらのマッピング方法を使用するには、オンプレミスの Active Directoryのユーザー オブジェクトに altSecurityIdentities 属性を設定する必要があります。 さらに、Windows ドメイン コントローラーに証明書ベースの認証の変更を KB5014754 に記載されているように適用した後、オンプレミス Active Directory の強力な証明書バインディングの実施要件を満たすために、再利用可能でないマッピング方法である、(Type=strong) マッピング方法の一部が実装されている可能性があります。

同期エラーを回避するには、同期される値が certificateUserIds でサポートされている形式のいずれかに従っていることを確認します。

開始する前に、オンプレミスの Active Directoryから同期されているすべてのユーザー アカウントが次の条件を満たすことを確認します。

  • altSecurityIdentities 属性の値が 5 つ以下

  • 文字数が 1024 を超す値がない

  • 重複した値がない

    重複する値が、1 つの証明書を複数のオンプレミスの Active Directory アカウントにマップすることを意図しているかどうかを慎重に検討してください。 詳細については、「複数の環境の使用」を参照してください。

    Note

    特定のシナリオでは、ユーザーのサブセットに、1 つの証明書を複数のオンプレミスの Active Directory アカウントにマップするという業務上の正当な理由がある場合があります。 これらのシナリオを確認し、必要に応じて、オンプレミスの Active Directoryと Entra ID の両方で複数のアカウントにマップする個別のマッピング方法を実装します。

certificateUserIds の継続的な同期に関する考慮事項

  • オンプレミスの Active Directoryの値を設定するためのプロビジョニング プロセスで適切な検疫が実装されていることを確認します。 現在の有効な証明書に関連付けられている値のみが設定されます。
  • 値は、対応する証明書の有効期限が切れたり失効したりすると削除されます。
  • 1024 文字より大きい値は設定されません。
  • 重複する値はプロビジョニングされません。
  • Microsoft Entra Connect Health を使用して同期を監視します。

userPrincipalName を certificateUserIds に同期するように Microsoft Entra Connect を構成するには、次の手順に従います。

  1. Microsoft Entra Connect サーバーで、同期規則エディターを見つけて起動します。

  2. [方向] をクリックし、[送信] をクリックします。

    送信方向の同期規則のスクリーンショット。

  3. "Out to Microsoft Entra ID – User Identity(Microsoft Entra ID への送信 - ユーザー ID)" というルールを見つけて、編集 をクリックし、はい をクリックして確定します。

    ユーザー 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. [対象の属性] をクリックし、[CertificateUserIds] を選択し、[ソース] をクリックし、[UserPrincipalName] を選択したら、[保存] をクリックします。

    ルールを保存する方法のスクリーンショット。

  2. [OK] をクリックして確定します。

重要

前の例では、変換ルールのソース属性として userPrincipalName 属性を使用しています。 任意の、適切な値を持つ利用可能な属性を使用できます。 たとえば、一部の組織ではメール属性を使用します。 より複雑な変換ルールについては、「Microsoft Entra Connect Sync: 宣言型プロビジョニング式について」を参照してください。

宣言型のプロビジョニングの式の詳細については、「Microsoft Entra Connect: 宣言型のプロビジョニングの式」を参照してください。

altSecurityIdentities 属性を Active Directory から Microsoft Entra ID の certificateUserIds に同期する

altSecurityIdentities 属性は、既定の属性セットの一部ではありません。 管理者は、メタバースの person オブジェクトに新しい属性を追加し、適切な同期ルールを作成して、このデータを Entra ID の certificateUserIds にリレーする必要があります。

  1. メタバース デザイナーを開き、person オブジェクトを選択します。 alternativeSecurityId 属性を作成するには、[新しい属性] をクリックします。 [文字列 (インデックスなし)] を選択して、最大 1024 文字 (certificateUserIds でサポートされる最大長) の属性サイズを作成します。 [文字列 (インデックス可能)] を選択した場合、属性値の最大サイズは 448 文字です。 [複数値] を選択していることを確認します。

    新しい属性を作成する方法のスクリーンショット。

  2. メタバース デザイナーを開き、alternativeSecurityId を選択して person オブジェクトに追加します。

    alternativeSecurityId を person オブジェクトに追加する方法のスクリーンショット。

  3. altSecurityIdentities から alternativeSecurityId 属性に変換する受信同期ルールを作成します。

    受信規則では、次のオプションを使用します。

    オプション Value
    名前 ルールのわかりやすい名前 (例: In from Active Directory - altSecurityIdentities)
    接続先システム オンプレミスの Active Directory ドメイン
    接続先システム オブジェクトの種類 user
    メタバース オブジェクトの種類 個人
    優先順位 現在使用されていない 100 より下の数値を選択する

    次に、次のスクリーンショットに示すように [変換] をクリックし、ソース属性 altSecurityIdentities からターゲット属性 alternativeSecurityId への直接マッピングを作成します。

    altSecurityIdentities から alternateSecurityId 属性に変換する方法のスクリーンショット。

  4. alternativeSecurityId 属性から Entra ID で certificateUserIds 属性に変換する送信同期ルールを作成します。

    オプション Value
    名前 規則のわかりやすい名前 (例: Out to Microsoft Entra ID - certificateUserIds)
    接続先システム お使いの Microsoft Entra ドメイン
    接続先システム オブジェクトの種類 user
    メタバース オブジェクトの種類 個人
    優先順位 現在、すべての既定のルールの上で使用されていない高い数値 (150 など) を選択する

    次に、次のスクリーンショットに示すように [変換] をクリックし、ソース属性 alternativeSecurityId からターゲット属性 certificateUserIds への直接マッピングを作成します。

    alternateSecurityId 属性から certificateUserIds に変換する送信同期規則のスクリーンショット。

  5. 同期を実行して、certificateUserIds 属性にデータを事前設定します。

  6. 成功を確認するには、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 から値をフィルター処理できます。 これらの値を使用して認証を有効にするために、certificateUserIds に同期されているユーザー名バインディングをサポートするように CBA 構成が更新されていることを確認します。

次のステップ