Dela via


Konfigurera synkronisering mellan klientorganisationer med PowerShell eller Microsoft Graph API

Den här artikeln beskriver de viktigaste stegen för att konfigurera synkronisering mellan klientorganisationer med hjälp av Microsoft Graph PowerShell eller Microsoft Graph API. När det är konfigurerat etablerar och avreglerar Microsoft Entra-ID automatiskt B2B-användare i målklientorganisationen. Detaljerade steg med administrationscentret för Microsoft Entra finns i Konfigurera synkronisering mellan klientorganisationer.

Diagram som visar synkronisering mellan klientorganisationer mellan källklientorganisationen och målklientorganisationen.

Förutsättningar

Ikon för källklientorganisationen.
Källklientorganisation

Ikon för målklientorganisationen.
Målklientorganisation

Steg 1: Logga in på målklientorganisationen

Ikon för målklientorganisationen.
Målklientorganisation

  1. Starta PowerShell.

  2. Installera Microsoft Graph PowerShell SDK om det behövs.

  3. Hämta klientorganisations-ID för käll- och målklientorganisationer och initiera variabler.

    $SourceTenantId = "<SourceTenantId>"
    $TargetTenantId = "<TargetTenantId>"
    
  4. Använd kommandot Connect-MgGraph för att logga in på målklientorganisationen och godkänna följande behörigheter.

    • Policy.Read.All
    • Policy.ReadWrite.CrossTenantAccess
    Connect-MgGraph -TenantId $TargetTenantId -Scopes "Policy.Read.All","Policy.ReadWrite.CrossTenantAccess"
    

Steg 2: Aktivera användarsynkronisering i målklientorganisationen

Ikon för målklientorganisationen.
Målklientorganisation

  1. I målklientorganisationen använder du kommandot New-MgPolicyCrossTenantAccessPolicyPartner för att skapa en ny partnerkonfiguration i en åtkomstprincip mellan flera klientorganisationer mellan målklientorganisationen och källklientorganisationen. Använd källklient-ID:t i begäran.

    Om du får felet New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already existskanske du redan har en befintlig konfiguration. Mer information finns i Symptom – nytt MgPolicyCrossTenantAccessPolicyPartner_Create fel.

    $Params = @{
        TenantId = $SourceTenantId
    }
    New-MgPolicyCrossTenantAccessPolicyPartner -BodyParameter $Params | Format-List
    
    AutomaticUserConsentSettings : Microsoft.Graph.PowerShell.Models.MicrosoftGraphInboundOutboundPolicyConfiguration
    B2BCollaborationInbound      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BCollaborationOutbound     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BDirectConnectInbound      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BDirectConnectOutbound     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    IdentitySynchronization      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantIdentitySyncPolicyPartner
    InboundTrust                 : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyInboundTrust
    IsServiceProvider            :
    TenantId                     : <SourceTenantId>
    TenantRestrictions           : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyTenantRestrictions
    AdditionalProperties         : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#policies/crossTenantAccessPolicy/partners/$entity],
                                   [crossCloudMeetingConfiguration,
                                   System.Collections.Generic.Dictionary`2[System.String,System.Object]], [protectedContentSharing,
                                   System.Collections.Generic.Dictionary`2[System.String,System.Object]]}
    
  2. Använd kommandot Invoke-MgGraphRequest för att aktivera användarsynkronisering i målklientorganisationen.

    Om du får ett Request_MultipleObjectsWithSameKeyValue fel kanske du redan har en befintlig princip. Mer information finns i Symptom – Request_MultipleObjectsWithSameKeyValue fel.

    $Params = @{
        userSyncInbound = @{
            isSyncAllowed = $true
        }
    }
    Invoke-MgGraphRequest -Method PUT -Uri "https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/partners/$SourceTenantId/identitySynchronization" -Body $Params
    
  3. Använd kommandot Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization för att verifiera IsSyncAllowed att är inställt på Sant.

    (Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
    
    IsSyncAllowed
    -------------
    True
    

Steg 3: Lös in inbjudningar automatiskt i målklientorganisationen

Ikon för målklientorganisationen.
Målklientorganisation

  1. I målklientorganisationen använder du kommandot Update-MgPolicyCrossTenantAccessPolicyPartner för att automatiskt lösa in inbjudningar och förhindra medgivandemeddelanden för inkommande åtkomst.

    $AutomaticUserConsentSettings = @{
        "InboundAllowed"="True"
    }
    Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
    

Steg 4: Logga in på källklientorganisationen

Ikon för källklientorganisationen.
Källklientorganisation

  1. Starta en instans av PowerShell.

  2. Hämta klientorganisations-ID för käll- och målklientorganisationer och initiera variabler.

    $SourceTenantId = "<SourceTenantId>"
    $TargetTenantId = "<TargetTenantId>"
    
  3. Använd kommandot Connect-MgGraph för att logga in på källklientorganisationen och godkänna följande nödvändiga behörigheter.

    • Policy.Read.All
    • Policy.ReadWrite.CrossTenantAccess
    • Application.ReadWrite.All
    • Directory.ReadWrite.All
    • AuditLog.Read.All
    Connect-MgGraph -TenantId $SourceTenantId -Scopes "Policy.Read.All","Policy.ReadWrite.CrossTenantAccess","Application.ReadWrite.All","Directory.ReadWrite.All","AuditLog.Read.All"
    

Steg 5: Lös in inbjudningar automatiskt i källklientorganisationen

Ikon för källklientorganisationen.
Källklientorganisation

  1. I källklientorganisationen använder du kommandot New-MgPolicyCrossTenantAccessPolicyPartner för att skapa en ny partnerkonfiguration i en åtkomstprincip mellan klientorganisationer mellan källklientorganisationen och målklientorganisationen. Använd målklient-ID:t i begäran.

    Om du får felet New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already existskanske du redan har en befintlig konfiguration. Mer information finns i Symptom – nytt MgPolicyCrossTenantAccessPolicyPartner_Create fel.

    $Params = @{
        TenantId = $TargetTenantId
    }
    New-MgPolicyCrossTenantAccessPolicyPartner -BodyParameter $Params | Format-List
    
    AutomaticUserConsentSettings : Microsoft.Graph.PowerShell.Models.MicrosoftGraphInboundOutboundPolicyConfiguration
    B2BCollaborationInbound      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BCollaborationOutbound     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BDirectConnectInbound      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    B2BDirectConnectOutbound     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyB2BSetting
    IdentitySynchronization      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantIdentitySyncPolicyPartner
    InboundTrust                 : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyInboundTrust
    IsServiceProvider            :
    TenantId                     : <TargetTenantId>
    TenantRestrictions           : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCrossTenantAccessPolicyTenantRestrictions
    AdditionalProperties         : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#policies/crossTenantAccessPolicy/partners/$entity],
                                   [crossCloudMeetingConfiguration,
                                   System.Collections.Generic.Dictionary`2[System.String,System.Object]], [protectedContentSharing,
                                   System.Collections.Generic.Dictionary`2[System.String,System.Object]]}
    
    
  2. Använd kommandot Update-MgPolicyCrossTenantAccessPolicyPartner för att automatiskt lösa in inbjudningar och förhindra medgivandemeddelanden för utgående åtkomst.

    $AutomaticUserConsentSettings = @{
        "OutboundAllowed"="True"
    }
    Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $TargetTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
    

Steg 6: Skapa ett konfigurationsprogram i källklientorganisationen

Ikon för källklientorganisationen.
Källklientorganisation

  1. I källklientorganisationen använder du kommandot Invoke-MgInstantiateApplicationTemplate för att lägga till en instans av ett konfigurationsprogram från Microsoft Entra-programgalleriet i klientorganisationen.

    Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7" -DisplayName "Fabrikam"
    
  2. Använd kommandot Get-MgServicePrincipal för att hämta tjänstens huvudnamns-ID och approll-ID.

    Get-MgServicePrincipal -Filter "DisplayName eq 'Fabrikam'" | Format-List
    
    AccountEnabled                      : True
    AddIns                              : {}
    AlternativeNames                    : {}
    AppDescription                      :
    AppDisplayName                      : Fabrikam
    AppId                               : <AppId>
    AppManagementPolicies               :
    AppOwnerOrganizationId              : <AppOwnerOrganizationId>
    AppRoleAssignedTo                   :
    AppRoleAssignmentRequired           : True
    AppRoleAssignments                  :
    AppRoles                            : {<AppRoleId>}
    ApplicationTemplateId               : 518e5f48-1fc8-4c48-9387-9fdf28b0dfe7
    ClaimsMappingPolicies               :
    CreatedObjects                      :
    CustomSecurityAttributes            : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCustomSecurityAttributeValue
    DelegatedPermissionClassifications  :
    DeletedDateTime                     :
    Description                         :
    DisabledByMicrosoftStatus           :
    DisplayName                         : Fabrikam
    Endpoints                           :
    ErrorUrl                            :
    FederatedIdentityCredentials        :
    HomeRealmDiscoveryPolicies          :
    Homepage                            : https://account.activedirectory.windowsazure.com:444/applications/default.aspx?metadata=aad2aadsync|ISV9.1|primary|z
    Id                                  : <ServicePrincipalId>
    Info                                : Microsoft.Graph.PowerShell.Models.MicrosoftGraphInformationalUrl
    KeyCredentials                      : {}
    LicenseDetails                      :
    
    ...
    
  3. Initiera en variabel för tjänstens huvudnamns-ID.

    Se till att använda tjänstens huvudnamns-ID i stället för program-ID:t.

    $ServicePrincipalId = "<ServicePrincipalId>"
    
  4. Initiera en variabel för approll-ID:t.

    $AppRoleId= "<AppRoleId>"
    

Steg 7: Testa anslutningen till målklientorganisationen

Ikon för källklientorganisationen.
Källklientorganisation

  1. I källklientorganisationen använder du kommandot Invoke-MgGraphRequest för att testa anslutningen till målklientorganisationen och verifiera autentiseringsuppgifterna.

    $Params = @{
        "useSavedCredentials" = $false
        "templateId" = "Azure2Azure"
        "credentials" = @(
            @{
                "key" = "CompanyId"
                "value" = $TargetTenantId
            }
            @{
                "key" = "AuthenticationType"
                "value" = "SyncPolicy"
            }
        )
    }
    Invoke-MgGraphRequest -Method POST -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$ServicePrincipalId/synchronization/jobs/validateCredentials" -Body $Params
    

Steg 8: Skapa ett etableringsjobb i källklientorganisationen

Ikon för källklientorganisationen.
Källklientorganisation

Skapa ett etableringsjobb för att aktivera etablering i källklientorganisationen.

  1. Fastställ synkroniseringsmallen som ska användas, till exempel Azure2Azure.

    En mall har förkonfigurerade synkroniseringsinställningar.

  2. I källklientorganisationen använder du kommandot New-MgServicePrincipalSynchronizationJob för att skapa ett etableringsjobb baserat på en mall.

    New-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -TemplateId "Azure2Azure" | Format-List
    
    Id                         : <JobId>
    Schedule                   : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchedule
    Schema                     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchema
    Status                     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationStatus
    SynchronizationJobSettings : {AzureIngestionAttributeOptimization, LookaheadQueryEnabled}
    TemplateId                 : Azure2Azure
    AdditionalProperties       : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('<ServicePrincipalId>')/synchro
                                 nization/jobs/$entity]}
    
  3. Initiera en variabel för jobb-ID:t.

    $JobId = "<JobId>"
    

Steg 9: Spara dina autentiseringsuppgifter

Ikon för källklientorganisationen.
Källklientorganisation

  1. I källklientorganisationen använder du kommandot Invoke-MgGraphRequest för att spara dina autentiseringsuppgifter.

    $Params = @{
        "value" = @(
            @{
                "key" = "AuthenticationType"
                "value" = "SyncPolicy"
            }
            @{
                "key" = "CompanyId"
                "value" = $TargetTenantId
            }
        )
    }
    Invoke-MgGraphRequest -Method PUT -Uri "https://graph.microsoft.com/v1.0/servicePrincipals/$ServicePrincipalId/synchronization/secrets" -Body $Params
    

Steg 10: Tilldela en användare till konfigurationen

Ikon för källklientorganisationen.
Källklientorganisation

För att synkronisering mellan klientorganisationer ska fungera måste minst en intern användare tilldelas till konfigurationen.

  1. I källklientorganisationen använder du kommandot New-MgServicePrincipalAppRoleAssignedTo för att tilldela en intern användare till konfigurationen.

    $Params = @{
        PrincipalId = "<PrincipalId>"
        ResourceId = $ServicePrincipalId
        AppRoleId = $AppRoleId
    }
    New-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $ServicePrincipalId -BodyParameter $Params | Format-List
    
    AppRoleId            : <AppRoleId>
    CreatedDateTime      : 7/31/2023 10:27:12 PM
    DeletedDateTime      :
    Id                   : <Id>
    PrincipalDisplayName : User1
    PrincipalId          : <PrincipalId>
    PrincipalType        : User
    ResourceDisplayName  : Fabrikam
    ResourceId           : <ServicePrincipalId>
    AdditionalProperties : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#appRoleAssignments/$entity]}
    

Steg 11: Testa etablering på begäran

Ikon för källklientorganisationen.
Källklientorganisation

Nu när du har en konfiguration kan du testa etablering på begäran med en av dina användare.

  1. I källklientorganisationen använder du kommandot Get-MgServicePrincipalSynchronizationJobSchema för att hämta schemaregel-ID:t.

    $SynchronizationSchema = Get-MgServicePrincipalSynchronizationJobSchema -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId
    $SynchronizationSchema.SynchronizationRules | Format-List
    
    ContainerFilter      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphContainerFilter
    Editable             : True
    GroupFilter          : Microsoft.Graph.PowerShell.Models.MicrosoftGraphGroupFilter
    Id                   : <RuleId>
    Metadata             : {defaultSourceObjectMappings, supportsProvisionOnDemand}
    Name                 : USER_INBOUND_USER
    ObjectMappings       : {Provision Azure Active Directory Users, , , ...}
    Priority             : 1
    SourceDirectoryName  : Azure Active Directory
    TargetDirectoryName  : Azure Active Directory (target tenant)
    AdditionalProperties : {}
    
  2. Initiera en variabel för regel-ID:t.

    $RuleId = "<RuleId>"
    
  3. Använd kommandot New-MgServicePrincipalSynchronizationJobOnDemand för att etablera en testanvändare på begäran.

    $Params = @{
        Parameters = @(
            @{
                Subjects = @(
                    @{
                        ObjectId = "<UserObjectId>"
                        ObjectTypeName = "User"
                    }
                )
                RuleId = $RuleId
            }
        )
    }
    New-MgServicePrincipalSynchronizationJobOnDemand -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId -BodyParameter $Params | Format-List
    
    Key                  : Microsoft.Identity.Health.CPP.Common.DataContracts.SyncFabric.StatusInfo
    Value                : [{"provisioningSteps":[{"name":"EntryImport","type":"Import","status":"Success","description":"Retrieved User
                           'user1@fabrikam.com' from Azure Active Directory","timestamp":"2023-07-31T22:31:15.9116590Z","details":{"objectId":
                           "<UserObjectId>","accountEnabled":"True","displayName":"User1","mailNickname":"user1","userPrincipalName":"use
                           ...
    AdditionalProperties : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.stringKeyStringValuePair]}
    

Steg 12: Starta etableringsjobbet

Ikon för källklientorganisationen.
Källklientorganisation

  1. Nu när etableringsjobbet har konfigurerats använder du kommandot Start-MgServicePrincipalSynchronizationJob i källklientorganisationen för att starta etableringsjobbet.

    Start-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId
    

Steg 13: Övervaka etablering

Ikon för källklientorganisationen.
Källklientorganisation

  1. Nu när etableringsjobbet körs använder du kommandot Get-MgServicePrincipalSynchronizationJob i källklientorganisationen för att övervaka förloppet för den aktuella etableringscykeln samt statistik hittills, till exempel antalet användare och grupper som har skapats i målsystemet.

    Get-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId | Format-List
    
    Id                         : <JobId>
    Schedule                   : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchedule
    Schema                     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationSchema
    Status                     : Microsoft.Graph.PowerShell.Models.MicrosoftGraphSynchronizationStatus
    SynchronizationJobSettings : {AzureIngestionAttributeOptimization, LookaheadQueryEnabled}
    TemplateId                 : Azure2Azure
    AdditionalProperties       : {[@odata.context, https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('<ServicePrincipalId>')/synchro
                                 nization/jobs/$entity]}
    
  2. Förutom att övervaka statusen för etableringsjobbet använder du kommandot Get-MgAuditLogProvisioning för att hämta etableringsloggarna och hämta alla etableringshändelser som inträffar. Fråga till exempel efter en viss användare och ta reda på om de har etablerats.

    Get-MgAuditLogDirectoryAudit | Select -First 10 | Format-List
    
    ActivityDateTime     : 7/31/2023 12:08:17 AM
    ActivityDisplayName  : Export
    AdditionalDetails    : {Details, ErrorCode, EventName, ipaddr...}
    Category             : ProvisioningManagement
    CorrelationId        : aaaa0000-bb11-2222-33cc-444444dddddd
    Id                   : Sync_aaaa0000-bb11-2222-33cc-444444dddddd_L5BFV_161778479
    InitiatedBy          : Microsoft.Graph.PowerShell.Models.MicrosoftGraphAuditActivityInitiator1
    LoggedByService      : Account Provisioning
    OperationType        :
    Result               : success
    ResultReason         : User 'user2@fabrikam.com' was created in Azure Active Directory (target tenant)
    TargetResources      : {<ServicePrincipalId>, }
    AdditionalProperties : {}
    
    ActivityDateTime     : 7/31/2023 12:08:17 AM
    ActivityDisplayName  : Export
    AdditionalDetails    : {Details, ErrorCode, EventName, ipaddr...}
    Category             : ProvisioningManagement
    CorrelationId        : aaaa0000-bb11-2222-33cc-444444dddddd
    Id                   : Sync_aaaa0000-bb11-2222-33cc-444444dddddd_L5BFV_161778264
    InitiatedBy          : Microsoft.Graph.PowerShell.Models.MicrosoftGraphAuditActivityInitiator1
    LoggedByService      : Account Provisioning
    OperationType        :
    Result               : success
    ResultReason         : User 'user2@fabrikam.com' was updated in Azure Active Directory (target tenant)
    TargetResources      : {<ServicePrincipalId>, }
    AdditionalProperties : {}
    
    ActivityDateTime     : 7/31/2023 12:08:14 AM
    ActivityDisplayName  : Synchronization rule action
    AdditionalDetails    : {Details, ErrorCode, EventName, ipaddr...}
    Category             : ProvisioningManagement
    CorrelationId        : aaaa0000-bb11-2222-33cc-444444dddddd
    Id                   : Sync_aaaa0000-bb11-2222-33cc-444444dddddd_L5BFV_161778395
    InitiatedBy          : Microsoft.Graph.PowerShell.Models.MicrosoftGraphAuditActivityInitiator1
    LoggedByService      : Account Provisioning
    OperationType        :
    Result               : success
    ResultReason         : User 'user2@fabrikam.com' will be created in Azure Active Directory (target tenant) (User is active and assigned
                           in Azure Active Directory, but no matching User was found in Azure Active Directory (target tenant))
    TargetResources      : {<ServicePrincipalId>, }
    AdditionalProperties : {}
    

Felsökningstips

Symptom – Otillräckligt behörighetsfel

När du försöker utföra en åtgärd får du ett felmeddelande som liknar följande:

code: Authorization_RequestDenied
message: Insufficient privileges to complete the operation.

Orsak

Antingen har den inloggade användaren inte tillräcklig behörighet eller så måste du samtycka till någon av de behörigheter som krävs.

Lösning

  1. Kontrollera att du har tilldelats de roller som krävs. Se Krav tidigare i den här artikeln.

  2. När du loggar in med Connect-MgGraph kontrollerar du att du anger de nödvändiga omfången. Se Steg 1: Logga in på målklientorganisationen och steg 4: Logga in på källklientorganisationen tidigare i den här artikeln.

Symptom – Nytt MgPolicyCrossTenantAccessPolicyPartner_Create fel

När du försöker skapa en ny partnerkonfiguration får du ett felmeddelande som liknar följande:

New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists.

Orsak

Du försöker förmodligen skapa en konfiguration eller ett objekt som redan finns, eventuellt från en tidigare konfiguration.

Lösning

  1. Kontrollera din syntax och att du använder rätt klientorganisations-ID.

  2. Använd kommandot Get-MgPolicyCrossTenantAccessPolicyPartner för att visa en lista över det befintliga objektet.

  3. Om du har ett befintligt objekt kan du behöva göra en uppdatering med Update-MgPolicyCrossTenantAccessPolicyPartner

Symptom – Request_MultipleObjectsWithSameKeyValue fel

När du försöker aktivera användarsynkronisering får du ett felmeddelande som liknar följande:

Invoke-MgGraphRequest: PUT https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/partners/<SourceTenantId>/identitySynchronization
HTTP/1.1 409 Conflict
...
{"error":{"code":"Request_MultipleObjectsWithSameKeyValue","message":"A conflicting object with one or more of the specified property values is present in the directory.","details":[{"code":"ConflictingObjects","message":"A conflicting object with one or more of the specified property values is present in the directory.", ... }}}

Orsak

Du försöker förmodligen skapa en princip som redan finns, eventuellt från en tidigare konfiguration.

Lösning

  1. Kontrollera din syntax och att du använder rätt klientorganisations-ID.

  2. Använd kommandot Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization för att visa en lista över inställningenIsSyncAllowed.

    (Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
    
  3. Om du har en befintlig princip kan du behöva göra en uppdatering med hjälp av kommandot Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization för att aktivera användarsynkronisering.

    $Params = @{
        userSyncInbound = @{
            isSyncAllowed = $true
        }
    }
    Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -BodyParameter $Params
    

Nästa steg