Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Användarobjekt i Microsoft Entra-ID har ett attribut med namnet certificateUserIds.
- Attributet certificateUserIds är flervärdesattribut och kan innehålla upp till 10 värden.
- Varje värde får inte innehålla mer än 1 024 tecken.
- Varje värde måste vara unikt. När ett värde finns på ett användarkonto kan det inte skrivas till något annat användarkonto i samma Microsoft Entra-klientorganisation.
- Värdet behöver inte vara i e-post-ID-format. Attributet certificateUserIds kan lagra icke-routbara UPN-namn (user principal names) som bob@woodgrove eller bob@local.
Anmärkning
Även om varje värde måste vara unikt i Microsoft Entra-ID kan du mappa ett enda certifikat till flera konton genom att implementera flera användarnamnsbindningar. Mer information finns i Flera användarnamnsbindningar.
Mönster som stöds för certifikatanvändar-ID
Värdena som lagras i certificateUserIds ska vara i det format som beskrivs i följande tabell. Prefixen X509:<Mapping> är skiftlägeskänsliga.
Fält för certifikatmappning | Exempel på värden i certificateUserIds |
---|---|
Huvudnamn | X509:<PN>bob@woodgrove.com |
Huvudnamn | X509:<PN>bob@woodgrove |
RFC822Name | X509:<RFC822>user@woodgrove.com |
UtfärdareOchÄmne | X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<S>DC=com,DC=contoso,OU=UserAccounts,CN=mfatest |
Ämne | X509:<S>DC=com,DC=contoso,OU=UserAccounts,CN=mfatest |
SKIDA | X509:<SKI>aB1cD2eF3gH4iJ5kL6mN7oP8qR |
SHA1PublicKey | X509:<SHA1-PUKEY>cD2eF3gH4iJ5kL6mN7oP8qR9sT |
UtfärdareOchSerienummer | X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>eF3gH4iJ5kL6mN7oP8qR9sT0uV Om du vill hämta rätt värde för serienummer kör du det här kommandot och lagrar värdet som visas i certificateUserIds: Syntax: Certutil –dump –v [~certificate path~] >> [~dumpFile path~] Exempel: certutil -dump -v firstusercert.cer >> firstCertDump.txt |
Roller för att uppdatera certificateUserIds
Endast molnanvändare måste ha minst rollen Administratör för privilegierad autentisering för att uppdatera certificateUserIds. Endast molnanvändare kan använda antingen administrationscentret för Microsoft Entra eller Microsoft Graph för att uppdatera certificateUserIds.
Synkroniserade användare måste ha minst rollen Hybrididentitetsadministratör för att kunna uppdatera certificateUserIds. Endast Microsoft Entra Connect kan användas för att uppdatera certificateUserIds genom att synkronisera värdet lokalt.
Anmärkning
Active Directory-administratörer kan göra ändringar som påverkar värdet certificateUserIds i Microsoft Entra-ID för alla synkroniserade konton. Administratörer kan inkludera konton med delegerad administrativ behörighet över synkroniserade användarkonton eller administrativa rättigheter över Microsoft Entra Connect-servrarna.
Så här hittar du rätt CertificateUserIds-värden för en användare från slutanvändarcertifikatet med hjälp av PowerShell-modulen
Användar-ID:n för certifikat följer ett visst mönster för sina värden enligt bindningskonfigurationerna för användarnamn i klientorganisationen. Följande PowerShell-kommando hjälper en administratör att hämta de exakta värdena för attributet Certificate UserIds för en användare från ett slutanvändarcertifikat. Administratören kan också hämta de aktuella värdena i attributet Certificate UserIds för en användare för en viss användarnamnsbindning och ange värdet för attributet Certificate UserIds.
Mer information finns i Microsoft Entra PowerShell-installation och Microsoft Graph PowerShell.
Starta PowerShell.
Installera och importera Microsoft Graph PowerShell SDK.
Install-Module Microsoft.Graph -Scope CurrentUser Import-Module Microsoft.Graph.Authentication Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Installera Microsoft Entra PowerShell-modulen (lägsta nödvändiga version är 1.0.6)
Install-Module -Name Microsoft.Entra
Mer information om Modulen CertificateBasedAuthentication här
Get-EntraUserCBAAuthorizationInfo
Get-EntraUserCBAAuthorizationInfo hjälper dig att hämta auktoriseringsinformation för en Microsoft Entra-ID-användare, inklusive certifikatbaserade autentiseringsidentifierare.
Syntax: Get-EntraUserCBAAuthorizationInfo [-UserId] <String>
[-Raw]
[<CommonParameters>]
Exempel 1: Hämta auktoriseringsinformation för en användare efter användarens huvudnamn
Connect-Entra -Scopes 'User.Read.All'
Get-EntraUserCBAAuthorizationInfo -UserId ‘user@contoso.com'
Svar:
Egenskap | Värde |
---|---|
Id | aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb |
visningsnamn | Contoso User |
Användarens huvudnamn | user@contoso.com |
Användartyp | Member |
Auktoriseringsinformation | @{CertificateUserIds=System.Object[]; RawAuthorizationInfo=System.Collections.Hashtable} |
Det här kommandot hämtar auktoriseringsinformationen för användaren med det angivna användarens huvudnamn.
Exempel 2: Hämta auktoriseringsinformation för en användare
Connect-Entra -Scopes 'User.Read.All'
$userInfo = Get-EntraUserCBAAuthorizationInfo -UserId 'user@contoso.com'
$userInfo.AuthorizationInfo.CertificateUserIds | Format-Table Type, TypeName, Value
Svar:
Typ | Typnamn | Värde |
---|---|---|
PN | Huvudnamn | user@contoso.com |
S | Ämne | CN=user@contoso.com |
SKIDA | Ämnesnyckelidentifierare | 1111112222333344445555 |
Det här exemplet hämtar auktoriseringsinformationen.
Exempel 3: Extrahera specifika certifikatanvändar-ID:t
Connect-Entra -Scopes 'User.Read.All'
$userInfo = Get-EntraUserCBAAuthorizationInfo -UserId user@contoso.com'
$userInfo.AuthorizationInfo.CertificateUserIds | Where-Object Type -eq "PN" | Select-Object -ExpandProperty Value
Svar:user@contoso.com
Det här exemplet hämtar auktoriseringsinformationen och filtrerar sedan för att endast visa certifikatvärdena för huvudnamn.
Get-EntraUserCertificateUserIdsFromCertificate
Returnerar ett objekt med de certifikatvärden som krävs för att konfigurera CertificateUserID:er för Certificate-Based-autentisering i Microsoft Entra-ID.
Syntax: Get-EntraUserCertificateUserIdsFromCertificate [-Path] <string>
[[-Certificate] <System.Security.Cryptography.X509Certificates.X509Certificate2> [-CertificateMapping] <string>]
[<CommonParameters>]
Om värdena från certifikatet är för långa kan du skicka utdata till en fil och kopiera därifrån.
Connect-Entra -Scopes 'User.Read.All'
Get-EntraUserCertificateUserIdsFromCertificate -Path C:\Downloads\test.pem | Format-List | Out-File -FilePath ".\certificateUserIds.txt"
Exempel 1: Hämta certifikatobjekt från en certifikatsökväg
Get-EntraUserCertificateUserIdsFromCertificate -Path 'C:\path\to\certificate.cer'
Svar:
Namn | Värde |
---|---|
Ämne | X509:<S>DC=com,DC=contoso,OU=UserAccounts,CN=user |
UtfärdareOchSerienummer | X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>eF3gH4iJ5kL6mN7oP8qR9sV0uD |
RFC822Name | X509:<RFC822>user@contoso.com |
SHA1PublicKey | X509:<SHA1-PUKEY>cA2eB3gH4iJ5kL6mN7oP8qR9sT |
UtfärdareOchÄmne | X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<S>DC=com,DC=contoso,OU=UserAccounts,CN=user |
SKIDA | X509:<SKI>aB1cD2eF3gH4iJ5kL6mN7oP8qR |
Huvudnamn | X509:<PN>user@contoso.com |
Det här exemplet visar hur du hämtar alla möjliga certifikatmappningar som ett objekt.
Exempel 2: Hämta certifikatobjekt från en certifikatsökväg och certifikatmappning
Get-EntraUserCertificateUserIdsFromCertificate -Path 'C:\path\to\certificate.cer' -CertificateMapping 'Subject'
Svar:X509:<S>DC=com,DC=contoso,OU=UserAccounts,CN=user
Det här kommandot returnerar egenskapen PrincipalName.
Exempel 3: Hämta certifikatobjekt från ett certifikat
$text = "-----BEGIN CERTIFICATE-----
MIIDiz...=
-----END CERTIFICATE-----"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($text)
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($bytes)
Get-EntraUserCertificateUserIdsFromCertificate -Certificate $certificate -CertificateMapping 'Subject'
Svar:X509:<S>DC=com,DC=contoso,OU=UserAccounts,CN=user
Det här kommandot returnerar egenskapen PrincipalName.
Set-EntraUserCBACertificateUserId
Anger användar-ID för certifikatbaserad autentisering för en användare i Microsoft Entra-ID med hjälp av en certifikatfil eller ett objekt.
Syntax Set-EntraUserCBACertificateUserId -UserId <string>
[-CertPath <string>]
[-Cert <System.Security.Cryptography.X509Certificates.X509Certificate2>]
-CertificateMapping <string[]>
[<CommonParameters>]
Exempel 1: Uppdatera användarens certifikatauktoriseringsinformation med hjälp av certifikatsökvägen
Connect-Entra -Scopes 'Directory.ReadWrite.All', 'User.ReadWrite.All'
Set-EntraUserCBACertificateUserId -UserId ‘user@contoso.com' -CertPath 'C:\path\to\certificate.cer' -CertificateMapping @('Subject', 'PrincipalName')
I det här exemplet anges certifikatets användar-ID för den angivna användaren med hjälp av en certifikatfil som mappar fälten Ämne och PrincipalName. Du kan använda kommandot Get-EntraUserCBAAuthorizationInfo för att visa uppdaterad information.
Exempel 2: Uppdatera användarens certifikatauktoriseringsinformation med hjälp av ett certifikat
Connect-Entra -Scopes 'Directory.ReadWrite.All', 'User.ReadWrite.All'
$text = '-----BEGIN CERTIFICATE-----
MIIDiz...=
-----END CERTIFICATE-----'
$bytes = [System.Text.Encoding]::UTF8.GetBytes($text)
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($bytes)
Set-EntraUserCBACertificateUserId -UserId user@contoso.com' -Cert $certificate -CertificateMapping @('RFC822Name', 'SKI')
I det här exemplet anges certifikatets användar-ID för den angivna användaren med hjälp av ett certifikatobjekt som mappar fälten RFC822Name och SKI. Du kan använda kommandot Get-EntraUserCBAAuthorizationInfo för att visa uppdaterad information.
Uppdatera certificateUserIds med administrationscentret för Microsoft Entra
Använd följande steg för att uppdatera certificateUserIds för användare:
Logga in på administrationscentret för Microsoft Entra som minst administratör för privilegierad autentisering för användare som endast är molnbaserade eller som minst en hybrididentitetsadministratör för synkroniserade användare.
Sök efter och välj Alla användare.
Välj en användare och välj Redigera egenskaper.
Bredvid Auktoriseringsinformation väljer du Visa.
Välj Redigera certifikatanvändares ID:t.
Välj Lägg till.
Ange värdet och välj Spara. Du kan lägga till upp till fyra värden, var och en av 120 tecken.
Uppdatera certificateUserIds med hjälp av Microsoft Graph-frågor
I följande exempel visas hur du använder Microsoft Graph för att söka efter certificateUserIds och uppdatera dem.
Slå upp "certificateUserIds"
Auktoriserade anropare kan köra Microsoft Graph-frågor för att hitta alla användare med ett visst certificateUserId-värde. I Microsoft Graph-användarobjektet lagras samlingen av certificateUserIds i egenskapen authorizationInfo .
Så här hämtar du certificateUserIds för alla användarobjekt:
GET https://graph.microsoft.com/v1.0/users?$select=authorizationinfo
ConsistencyLevel: eventual
Så här hämtar du certificateUserIds för en viss användare av användarens ObjectId:
GET https://graph.microsoft.com/v1.0/users/{user-object-id}?$select=authorizationinfo
ConsistencyLevel: eventual
Så här hämtar du användarobjektet med ett specifikt värde i 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
Du kan också använda operatorerna not
och startsWith
för att matcha filtervillkoret. Om du vill filtrera mot objektet certificateUserIds måste begäran innehålla frågesträngen $count=true
och rubriken ConsistencyLevel måste vara inställd på eventual
.
Uppdatera certifikatanvändar-ID
Kör en PATCH-begäran för att uppdatera certificateUserIds för en viss användare.
Begärandetext
PATCH https://graph.microsoft.com/v1.0/users/{user-object-id}
Content-Type: application/json
{
"authorizationInfo": {
"certificateUserIds": [
"X509:<PN>123456789098765@mil"
]
}
}
Uppdatera certificateUserIds med hjälp av Microsoft Graph PowerShell-kommandon
För den här konfigurationen kan du använda Microsoft Graph PowerShell.
Starta PowerShell med administratörsbehörighet.
Installera och importera Microsoft Graph PowerShell SDK.
Install-Module Microsoft.Graph -Scope CurrentUser Import-Module Microsoft.Graph.Authentication Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Anslut till klientorganisationen och acceptera alla.
Connect-MGGraph -Scopes "Directory.ReadWrite.All", "User.ReadWrite.All" -TenantId <tenantId>
Lista attributet certificateUserIds för en viss användare.
$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
Skapa en variabel med certificateUserIds-värden.
#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" ) } }
Uppdatera attributet certificateUserIds.
$results = Invoke-MGGraphRequest -Method patch -Uri 'https://graph.microsoft.com/v1.0/users/<UserId>/?$select=authorizationinfo' -OutputType PSObject -Headers @{'ConsistencyLevel' = 'eventual' } -Body $params
Uppdatera certificateUserIds med hjälp av användarobjekt
Hämta användarobjektet.
$userObjectId = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" $user = Get-MgUser -UserId $userObjectId -Property AuthorizationInfo
Uppdatera attributet certificateUserIds för användarobjektet.
$user.AuthorizationInfo.certificateUserIds = @("X509:<SKI>iJ5kL6mN7oP8qR9sT0uV1wX2yZ", "X509:<PN>user1@contoso.com") Update-MgUser -UserId $userObjectId -AuthorizationInfo $user.AuthorizationInfo
Uppdatera certificateUserIds med Microsoft Entra Connect
Microsoft Entra Connect stöder synkronisering av värden till certificateUserIds från en lokal Active Directory miljö. Lokal Active Directory har stöd för certifikatbaserad autentisering och flera användarnamnsbindningar. Se till att du använder den senaste versionen av Microsoft Entra Connect.
Om du vill använda dessa mappningsmetoder måste du fylla i attributet altSecurityIdentities för användarobjekt i lokal Active Directory. När du har tillämpat certifikatbaserade autentiseringsändringar på Windows-domänkontrollanter enligt beskrivningen i KB5014754 kan du dessutom ha implementerat några av de icke-återanvändbara mappningsmetoderna (Type=strong) för att uppfylla de lokala active directory-kraven för stark efterlevnad av certifikatbindning.
Om du vill förhindra synkroniseringsfel kontrollerar du att de värden som synkroniseras följer något av de format som stöds för certificateUserIds.
Innan du börjar kontrollerar du att alla användarkonton som synkroniseras från lokal Active Directory har:
10 eller färre värden i sina altSecurityIdentitetsattribut
Inget värde med fler än 1 024 tecken
Inga duplicerade värden
Tänk noga på om ett duplicerat värde är avsett att mappa ett enda certifikat till flera lokal Active Directory konton. Mer information finns i Flera användarnamnsbindningar.
Anmärkning
I specifika scenarier kan en delmängd användare ha en giltig affärsmotivering för att mappa ett enda certifikat till mer än en lokal Active Directory konto. Granska dessa scenarier och implementera separata mappningsmetoder för att mappa till fler än ett konto i både den lokala Active Directory och Microsoft Entra-ID:t.
Överväganden för pågående synkronisering av certificateUserIds
- Säkerställ att processen för att fylla i värdena i lokal Active Directory-miljö implementerar korrekta säkerhetsåtgärder. Endast värden som är associerade med aktuella giltiga certifikat fylls i.
- Värden tas bort när motsvarande certifikat har upphört att gälla eller återkallats.
- Värden som är större än 1 024 tecken fylls inte i.
- Dubblettvärden tilldelas inte.
- Använd Microsoft Entra Connect Health för att övervaka synkroniseringen.
Följ dessa steg för att konfigurera Microsoft Entra Connect för att synkronisera userPrincipalName med certificateUserIds:
På Microsoft Entra Connect-servern letar du upp och startar redigeraren för synkroniseringsregler.
Välj Riktning och välj Utgående.
Leta reda på regeln Ut till Microsoft Entra-ID – användaridentitet, välj Redigera och välj Ja för att bekräfta.
Ange ett högt tal i fältet Prioritet och välj sedan Nästa.
Välj Transformeringar>Lägg till transformering. Du kan behöva rulla ned i listan över transformeringar innan du kan skapa en ny.
Synkronisera X509:<PN>PrincipalNameValue
Om du vill synkronisera X509:<PN>PrincipalNameValue skapar du en regel för utgående synkronisering och väljer Uttryck i flödestypen. Välj målattributet som certificateUserIds och lägg till följande uttryck i källfältet. Om källattributet inte är userPrincipalName kan du ändra uttrycket i enlighet med detta.
"X509:<PN>"&[userPrincipalName]
Synkronisera X509:<RFC822>RFC822Name
Om du vill synkronisera X509:<RFC822>RFC822Name skapar du en regel för utgående synkronisering och väljer Uttryck i flödestypen. Välj målattributet som certificateUserIds och lägg till följande uttryck i källfältet. Om källattributet inte är userPrincipalName kan du ändra uttrycket i enlighet med detta.
"X509:<RFC822>"&[userPrincipalName]
Välj Målattribut, välj certificateUserIds, välj Källa, välj userPrincipalName och välj sedan Spara.
Bekräfta genom att välja OK .
Viktigt!
I föregående exempel används attributet userPrincipalName som ett källattribut i transformeringsregeln. Du kan använda alla tillgängliga attribut med lämpligt värde. Vissa organisationer använder till exempel e-postattributet. Mer komplexa transformeringsregler finns i Microsoft Entra Connect Sync: Förstå deklarativa etableringsuttryck
Mer information om deklarativa etableringsuttryck finns i Microsoft Entra Connect: Deklarativa etableringsuttryck.
Synkronisera attributet altSecurityIdentities från Active Directory till Microsoft Entra certificateUserIds
Attributet altSecurityIdentities ingår inte i standardattributuppsättningen. En administratör måste lägga till ett nytt attribut till personobjektet i Metaversum och sedan skapa lämpliga synkroniseringsregler för att vidarebefordra dessa data till certificateUserIds i Microsoft Entra-ID.
Öppna Metaverse Designer och välj personobjektet. Om du vill skapa attributet alternativeSecurityId väljer du Nytt attribut. Välj Sträng (kan inte indexeras) för att skapa en attributstorlek på upp till 1 024 tecken, vilket är den maximala längd som stöds för certificateUserIds. Om du väljer Sträng (indexerbar)är den maximala storleken för ett attributvärde 448 tecken. Se till att du väljer Flervärdesvärde.
Öppna Metaverse Designer och välj alternativeSecurityId för att lägga till det i personobjektet.
Skapa en regel för inkommande synkronisering för att omvandla från altSecurityIdentiteter till attributet alternativeSecurityId.
Använd följande alternativ i regeln för inkommande trafik.
Alternativ Värde Namn Beskrivande namn på regeln, till exempel: In från Active Directory – altSecurityIdentities Anslutet system Din lokal Active Directory domän Typ av anslutet systemobjekt användare Objekttyp för metaversum person Prioritet Välj ett tal under 100 som för närvarande inte används Välj sedan Transformeringar och skapa en direktmappning till målattributet alternativeSecurityId från källattributet altSecurityIdentiteter, enligt följande skärmbild.
Skapa en regel för utgående synkronisering för att transformera från attributet alternativeSecurityId till attributet certificateUserIds i Microsoft Entra ID.
Alternativ Värde Namn Beskrivande namn på regeln, till exempel: Ut till Microsoft Entra ID – certificateUserIds Anslutet system Din Microsoft Entra-domän Typ av anslutet systemobjekt användare Objekttyp för metaversum person Prioritet Välj ett högt tal som för närvarande inte används framför alla standardregler, till exempel 150 Välj sedan Transformeringar och skapa en direktmappning till målattributet certificateUserIds från källattributet alternativeSecurityId, enligt följande skärmbild.
Kör synkroniseringen för att fylla i data till attributet certificateUserIds.
Om du vill verifiera att det har lyckats kan du visa auktoriseringsinformationen för en användare i Microsoft Entra-ID.
Om du vill mappa en delmängd av värden från attributet altSecurityIdentities ersätter du transformering i steg 4 med ett uttryck. Om du vill använda ett uttryck fortsätter du till fliken Transformeringar och ändrar alternativet FlowType till Uttryck, målattributet till certificateUserIds och anger sedan uttrycket i fältet Källa. I följande exempel filtreras endast värden som överensstämmer med mappningsfälten SKI och SHA1PublicKey-certifikat:
Uttryckskod:
IIF(IsPresent([alternativeSecurityId]),
Where($item,[alternativeSecurityId],BitOr(InStr($item, "X509:<SKI>"),InStr($item, "X509:<SHA1-PUKEY>"))>0),[alternativeSecurityId]
)
Administratörer kan filtrera värden från altSecurityIdentiteter som överensstämmer med de mönster som stöds. Kontrollera att CBA-konfigurationen har uppdaterats för att stödja de användarnamnsbindningar som synkroniseras med certificateUserIds och aktivera autentisering med hjälp av dessa värden.
Nästa steg
- Översikt över Microsoft Entra CBA
- Teknisk djupdykning för Microsoft Entra CBA
- Så här konfigurerar du Microsoft Entra CBA
- Microsoft Entra CBA på iOS-enheter
- Microsoft Entra CBA på Android-enheter
- Inloggning med Windows-smartkort med Microsoft Entra CBA
- Så här migrerar du federerade användare
- Vanliga frågor och svar