Konfigurowanie synchronizacji między dzierżawami przy użyciu programu PowerShell lub interfejsu API programu Microsoft Graph
W tym artykule opisano kluczowe kroki konfigurowania synchronizacji między dzierżawami przy użyciu programu Microsoft Graph PowerShell lub interfejsu API programu Microsoft Graph. Po skonfigurowaniu identyfikator Entra firmy Microsoft automatycznie aprowizuje i anuluje aprowizowanie użytkowników B2B w dzierżawie docelowej. Aby uzyskać szczegółowe instrukcje dotyczące korzystania z centrum administracyjnego firmy Microsoft Entra, zobacz Konfigurowanie synchronizacji między dzierżawami.
Wymagania wstępne
Dzierżawa źródłowa
- Licencja microsoft Entra ID P1 lub P2. Aby uzyskać więcej informacji, zobacz Wymagania licencyjne.
- Rola administratora zabezpieczeń do konfigurowania ustawień dostępu między dzierżawami.
- Rola administratora tożsamości hybrydowej do konfigurowania synchronizacji między dzierżawami.
- Administrator aplikacji w chmurze lub rola administrator aplikacji, aby przypisać użytkowników do konfiguracji i usunąć konfigurację.
- Rola administratora globalnego w celu wyrażenia zgody na wymagane uprawnienia.
Dzierżawa docelowa
- Licencja microsoft Entra ID P1 lub P2. Aby uzyskać więcej informacji, zobacz Wymagania licencyjne.
- Rola administratora zabezpieczeń do konfigurowania ustawień dostępu między dzierżawami.
- Rola administratora globalnego w celu wyrażenia zgody na wymagane uprawnienia.
Krok 1. Logowanie do dzierżawy docelowej
Dzierżawa docelowa
Uruchom program PowerShell.
W razie potrzeby zainstaluj zestaw MICROSOFT Graph PowerShell SDK.
Pobierz identyfikator dzierżawy źródłowych i docelowych dzierżaw oraz zainicjuj zmienne.
$SourceTenantId = "<SourceTenantId>" $TargetTenantId = "<TargetTenantId>"
Użyj polecenia Connect-MgGraph, aby zalogować się do dzierżawy docelowej i wyrazić zgodę na następujące wymagane uprawnienia.
Policy.Read.All
Policy.ReadWrite.CrossTenantAccess
Connect-MgGraph -TenantId $TargetTenantId -Scopes "Policy.Read.All","Policy.ReadWrite.CrossTenantAccess"
Krok 2. Włączanie synchronizacji użytkowników w dzierżawie docelowej
Dzierżawa docelowa
W dzierżawie docelowej użyj polecenia New-MgPolicyCrossTenantAccessPolicyPartner , aby utworzyć nową konfigurację partnera w zasadach dostępu między dzierżawą docelową a dzierżawą źródłową. Użyj identyfikatora dzierżawy źródłowej w żądaniu.
Jeśli wystąpi błąd
New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists
, być może masz już istniejącą konfigurację. Aby uzyskać więcej informacji, zobacz Objaw — błąd new-MgPolicyCrossTenantAccessPolicyPartner_Create.$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]]}
Użyj polecenia Invoke-MgGraphRequest, aby włączyć synchronizację użytkowników w dzierżawie docelowej.
Jeśli wystąpi
Request_MultipleObjectsWithSameKeyValue
błąd, być może masz już istniejące zasady. Aby uzyskać więcej informacji, zobacz Objaw — błąd Request_MultipleObjectsWithSameKeyValue.$Params = @{ userSyncInbound = @{ isSyncAllowed = $true } } Invoke-MgGraphRequest -Method PUT -Uri "https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/partners/$SourceTenantId/identitySynchronization" -Body $Params
Użyj polecenia Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization, aby sprawdzić, czy
IsSyncAllowed
ustawiono wartość True.(Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
IsSyncAllowed ------------- True
Krok 3. Automatyczne realizowanie zaproszeń w dzierżawie docelowej
Dzierżawa docelowa
W dzierżawie docelowej użyj polecenia Update-MgPolicyCrossTenantAccessPolicyPartner , aby automatycznie zrealizować zaproszenia i pominąć monity o wyrażenie zgody dla dostępu przychodzącego.
$AutomaticUserConsentSettings = @{ "InboundAllowed"="True" } Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
Krok 4. Logowanie się do dzierżawy źródłowej
Dzierżawa źródłowa
Uruchom wystąpienie programu PowerShell.
Pobierz identyfikator dzierżawy źródłowych i docelowych dzierżaw oraz zainicjuj zmienne.
$SourceTenantId = "<SourceTenantId>" $TargetTenantId = "<TargetTenantId>"
Użyj polecenia Connect-MgGraph, aby zalogować się do dzierżawy źródłowej i wyrazić zgodę na następujące wymagane uprawnienia.
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"
Krok 5. Automatyczne realizowanie zaproszeń w dzierżawie źródłowej
Dzierżawa źródłowa
W dzierżawie źródłowej użyj polecenia New-MgPolicyCrossTenantAccessPolicyPartner , aby utworzyć nową konfigurację partnera w zasadach dostępu między dzierżawą źródłową a dzierżawą docelową. Użyj identyfikatora dzierżawy docelowej w żądaniu.
Jeśli wystąpi błąd
New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists
, być może masz już istniejącą konfigurację. Aby uzyskać więcej informacji, zobacz Objaw — błąd new-MgPolicyCrossTenantAccessPolicyPartner_Create.$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]]}
Użyj polecenia Update-MgPolicyCrossTenantAccessPolicyPartner, aby automatycznie zrealizować zaproszenia i pominąć monity o wyrażenie zgody dla dostępu wychodzącego.
$AutomaticUserConsentSettings = @{ "OutboundAllowed"="True" } Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $TargetTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
Krok 6. Tworzenie aplikacji konfiguracji w dzierżawie źródłowej
Dzierżawa źródłowa
W dzierżawie źródłowej użyj polecenia Invoke-MgInstantiateApplicationTemplate , aby dodać wystąpienie aplikacji konfiguracji z galerii aplikacji Entra firmy Microsoft do dzierżawy.
Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7" -DisplayName "Fabrikam"
Użyj polecenia Get-MgServicePrincipal, aby uzyskać identyfikator jednostki usługi i identyfikator roli aplikacji.
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 : ...
Zainicjuj zmienną dla identyfikatora jednostki usługi.
Pamiętaj, aby użyć identyfikatora jednostki usługi zamiast identyfikatora aplikacji.
$ServicePrincipalId = "<ServicePrincipalId>"
Zainicjuj zmienną dla identyfikatora roli aplikacji.
$AppRoleId= "<AppRoleId>"
Krok 7. Testowanie połączenia z dzierżawą docelową
Dzierżawa źródłowa
W dzierżawie źródłowej użyj polecenia Invoke-MgGraphRequest , aby przetestować połączenie z dzierżawą docelową i zweryfikować poświadczenia.
$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
Krok 8. Tworzenie zadania aprowizacji w dzierżawie źródłowej
Dzierżawa źródłowa
W dzierżawie źródłowej, aby włączyć aprowizowanie, utwórz zadanie aprowizacji.
Określ szablon synchronizacji do użycia, taki jak
Azure2Azure
.Szablon ma wstępnie skonfigurowane ustawienia synchronizacji.
W dzierżawie źródłowej użyj polecenia New-MgServicePrincipalSynchronizationJob , aby utworzyć zadanie aprowizacji na podstawie szablonu.
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]}
Zainicjuj zmienną dla identyfikatora zadania.
$JobId = "<JobId>"
Krok 9. Zapisywanie poświadczeń
Dzierżawa źródłowa
W dzierżawie źródłowej użyj polecenia Invoke-MgGraphRequest , aby zapisać poświadczenia.
$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
Krok 10. Przypisywanie użytkownika do konfiguracji
Dzierżawa źródłowa
Aby synchronizacja między dzierżawami działała, co najmniej jeden użytkownik wewnętrzny musi być przypisany do konfiguracji.
W dzierżawie źródłowej użyj polecenia New-MgServicePrincipalAppRoleAssignedTo , aby przypisać użytkownika wewnętrznego do konfiguracji.
$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]}
Krok 11. Testowanie aprowizacji na żądanie
Dzierżawa źródłowa
Teraz, gdy masz konfigurację, możesz przetestować aprowizację na żądanie przy użyciu jednego z użytkowników.
W dzierżawie źródłowej użyj polecenia Get-MgServicePrincipalSynchronizationJobSchema , aby uzyskać identyfikator reguły schematu.
$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 : {}
Zainicjuj zmienną dla identyfikatora reguły.
$RuleId = "<RuleId>"
Użyj polecenia New-MgServicePrincipalSynchronizationJobOnDemand, aby aprowizować użytkownika testowego na żądanie.
$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]}
Krok 12. Uruchamianie zadania aprowizacji
Dzierżawa źródłowa
Po skonfigurowaniu zadania aprowizacji w dzierżawie źródłowej użyj polecenia Start-MgServicePrincipalSynchronizationJob , aby uruchomić zadanie aprowizacji.
Start-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId
Krok 13. Monitorowanie aprowizacji
Dzierżawa źródłowa
Teraz, gdy zadanie aprowizacji jest uruchomione, w dzierżawie źródłowej użyj polecenia Get-MgServicePrincipalSynchronizationJob , aby monitorować postęp bieżącego cyklu aprowizacji, a także statystyki do tej pory, takie jak liczba użytkowników i grup, które zostały utworzone w systemie docelowym.
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]}
Oprócz monitorowania stanu zadania aprowizacji użyj polecenia Get-MgAuditLogProvisioning , aby pobrać dzienniki aprowizacji i pobrać wszystkie zdarzenia aprowizacji, które występują. Na przykład wykonaj zapytanie dotyczące określonego użytkownika i ustal, czy zostały one pomyślnie aprowidowane.
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 : {}
Wskazówki dotyczące rozwiązywania problemów
Objaw — błąd niewystarczające uprawnienia
Podczas próby wykonania akcji zostanie wyświetlony komunikat o błędzie podobny do następującego:
code: Authorization_RequestDenied
message: Insufficient privileges to complete the operation.
Przyczyna
Zalogowany użytkownik nie ma wystarczających uprawnień lub musisz wyrazić zgodę na jedno z wymaganych uprawnień.
Rozwiązanie
Upewnij się, że masz przypisane wymagane role. Zobacz Wymagania wstępne we wcześniejszej sekcji tego artykułu.
Po zalogowaniu się za pomocą polecenia Connect-MgGraph upewnij się, że określono wymagane zakresy. Zobacz Krok 1. Logowanie się do dzierżawy docelowej i Krok 4. Logowanie się do dzierżawy źródłowej we wcześniejszej sekcji tego artykułu.
Objaw — błąd new-MgPolicyCrossTenantAccessPolicyPartner_Create
Podczas próby utworzenia nowej konfiguracji partnera zostanie wyświetlony komunikat o błędzie podobny do następującego:
New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists.
Przyczyna
Prawdopodobnie próbujesz utworzyć konfigurację lub obiekt, który już istnieje, prawdopodobnie z poprzedniej konfiguracji.
Rozwiązanie
Sprawdź składnię i czy używasz poprawnego identyfikatora dzierżawy.
Użyj polecenia Get-MgPolicyCrossTenantAccessPolicyPartner, aby wyświetlić istniejący obiekt.
Jeśli masz istniejący obiekt, może być konieczne wprowadzenie aktualizacji przy użyciu polecenia Update-MgPolicyCrossTenantAccessPolicyPartner
Objaw — błąd Request_MultipleObjectsWithSameKeyValue
Podczas próby włączenia synchronizacji użytkowników zostanie wyświetlony komunikat o błędzie podobny do następującego:
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.", ... }}}
Przyczyna
Prawdopodobnie próbujesz utworzyć zasady, które już istnieją, prawdopodobnie z poprzedniej konfiguracji.
Rozwiązanie
Sprawdź składnię i czy używasz poprawnego identyfikatora dzierżawy.
Użyj polecenia Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization, aby wyświetlić ustawienie
IsSyncAllowed
.(Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInbound
Jeśli masz istniejące zasady, może być konieczne wprowadzenie aktualizacji przy użyciu polecenia Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization , aby włączyć synchronizację użytkowników.
$Params = @{ userSyncInbound = @{ isSyncAllowed = $true } } Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -BodyParameter $Params