Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Microsoft Graph PowerShell veya Microsoft Graph API kullanarak kiracılar arası eşitlemeyi yapılandırmaya yönelik temel adımlar açıklanmaktadır. Yapılandırıldığında, Microsoft Entra ID hedef kiracınızdaki B2B kullanıcılarını otomatik olarak sağlar ve kaldırır. Microsoft Entra yönetim merkezini kullanma ile ilgili ayrıntılı adımlar için, kiracılar arası eşitlemeyi yapılandırma hakkında bkz
Önkoşullar
Kaynak kiracı
- Microsoft Entra Id P1 veya P2 lisansı. Daha fazla bilgi için bkz . Lisans gereksinimleri.
- Kiracılar arası erişim ayarlarını yapılandırmak için Güvenlik Yöneticisi rolü.
- Kiracılar arası eşitlemeyi yapılandırmak için Karma Kimlik Yöneticisi rolü.
- Kullanıcıları bir yapılandırmaya atamak ve yapılandırmayı silmek için Bulut Uygulama Yöneticisi veya Uygulama Yöneticisi rolü.
- Ayrıcalıklı Rol Yöneticisi, gerekli izinlere onay vermek için rol.
Hedef kiracı
- Microsoft Entra Id P1 veya P2 lisansı. Daha fazla bilgi için bkz . Lisans gereksinimleri.
- Kiracılar arası erişim ayarlarını yapılandırmak için Güvenlik Yöneticisi rolü.
- Ayrıcalıklı Rol Yöneticisi, gerekli izinlere onay vermek için rol.
1. Adım: Hedef kiracıda oturum açma
Hedef kiracı
PowerShell'i başlatın.
Kaynak ve hedef kiracıların kiracı kimliğini alın ve değişkenleri başlatın.
$SourceTenantId = "<SourceTenantId>" $TargetTenantId = "<TargetTenantId>"Hedef kiracıda oturum açmak ve aşağıdaki gerekli izinleri kabul etmek için Connect-MgGraph komutunu kullanın.
Policy.Read.AllPolicy.ReadWrite.CrossTenantAccess
Connect-MgGraph -TenantId $TargetTenantId -Scopes "Policy.Read.All","Policy.ReadWrite.CrossTenantAccess"
2. Adım: Hedef kiracıda kullanıcı senkronizasyonunu etkinleştirme
Hedef kiracı
Hedef kiracıda New-MgPolicyCrossTenantAccessPolicyPartner komutunu kullanarak hedef kiracı ile kaynak kiracı arasındaki kiracılar arası erişim ilkesinde yeni bir iş ortağı yapılandırması oluşturun. İstekte kaynak kiracı kimliğini kullanın.
hatasını
New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already existsalırsanız, zaten var olan bir yapılandırmanız olabilir. Daha fazla bilgi için Belirti - New-MgPolicyCrossTenantAccessPolicyPartner_Create hatası bölümüne bakın.$Params = @{ TenantId = $SourceTenantId } New-MgPolicyCrossTenantAccessPolicyPartner -BodyParameter $Params | Format-ListAutomaticUserConsentSettings : 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]]}Hedef kiracıda kullanıcı eşitlemesini etkinleştirmek için Invoke-MgGraphRequest komutunu kullanın.
Hata
Request_MultipleObjectsWithSameKeyValuealırsanız, zaten mevcut bir politikanız olabilir. Daha fazla bilgi için bkz. Belirti - Request_MultipleObjectsWithSameKeyValue hatası$Params = @{ userSyncInbound = @{ isSyncAllowed = $true } } Invoke-MgGraphRequest -Method PUT -Uri "https://graph.microsoft.com/v1.0/policies/crossTenantAccessPolicy/partners/$SourceTenantId/identitySynchronization" -Body $ParamsGet-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization komutunu, değerinin Doğru olarak ayarlandığını doğrulamak için kullanın.
(Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInboundIsSyncAllowed ------------- True
3. Adım: Davetleri hedef kiracıda otomatik olarak kabul etme
Hedef kiracı
Hedef kiracıda, davetleri otomatik olarak kabul etmek ve gelen erişim için onay istemlerini engellemek amacıyla Update-MgPolicyCrossTenantAccessPolicyPartner komutunu kullanın.
$AutomaticUserConsentSettings = @{ "InboundAllowed"="True" } Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
4. Adım: Kaynak kiracıda oturum açma
Kaynak kiracı
PowerShell örneğini başlatın.
Kaynak ve hedef kiracıların kiracı kimliğini alın ve değişkenleri başlatın.
$SourceTenantId = "<SourceTenantId>" $TargetTenantId = "<TargetTenantId>"Kaynak kiracıda oturum açmak ve aşağıdaki gerekli izinleri kabul etmek için Connect-MgGraph komutunu kullanın.
Policy.Read.AllPolicy.ReadWrite.CrossTenantAccessApplication.ReadWrite.AllDirectory.ReadWrite.AllAuditLog.Read.All
Connect-MgGraph -TenantId $SourceTenantId -Scopes "Policy.Read.All","Policy.ReadWrite.CrossTenantAccess","Application.ReadWrite.All","Directory.ReadWrite.All","AuditLog.Read.All"
5. Adım: Davetleri kaynak kiracıda otomatik olarak kullanma
Kaynak kiracı
Kaynak kiracı ile hedef kiracı arasındaki kiracılar arası erişim ilkesinde yeni bir iş ortağı yapılandırması oluşturmak için kaynak kiracıda New-MgPolicyCrossTenantAccessPolicyPartner komutunu kullanın. İstekte hedef kiracı kimliğini kullanın.
hatasını
New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already existsalırsanız, zaten var olan bir yapılandırmanız olabilir. Daha fazla bilgi için Belirti - New-MgPolicyCrossTenantAccessPolicyPartner_Create hatası bölümüne bakın.$Params = @{ TenantId = $TargetTenantId } New-MgPolicyCrossTenantAccessPolicyPartner -BodyParameter $Params | Format-ListAutomaticUserConsentSettings : 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]]}Davetleri otomatik olarak tanımak ve dışa doğru erişim için onay istemlerini bastırmak için Update-MgPolicyCrossTenantAccessPolicyPartner komutunu kullanın.
$AutomaticUserConsentSettings = @{ "OutboundAllowed"="True" } Update-MgPolicyCrossTenantAccessPolicyPartner -CrossTenantAccessPolicyConfigurationPartnerTenantId $TargetTenantId -AutomaticUserConsentSettings $AutomaticUserConsentSettings
6. Adım: Kaynak kiracıda yapılandırma uygulaması oluşturma
Kaynak kiracı
Microsoft Entra uygulama galerisinden kiracınıza yapılandırma uygulamasının bir örneğini eklemek için kaynak kiracıda Invoke-MgInstantiateApplicationTemplate komutunu kullanın.
Invoke-MgInstantiateApplicationTemplate -ApplicationTemplateId "518e5f48-1fc8-4c48-9387-9fdf28b0dfe7" -DisplayName "Fabrikam"Hizmet sorumlusu kimliğini ve uygulama rolü kimliğini almak için Get-MgServicePrincipal komutunu kullanın.
Get-MgServicePrincipal -Filter "DisplayName eq 'Fabrikam'" | Format-ListAccountEnabled : 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 : ...Hizmet sorumlusu kimliği için bir değişken başlatın.
Uygulama kimliği yerine hizmet sorumlusu kimliğini kullandığınızdan emin olun.
$ServicePrincipalId = "<ServicePrincipalId>"Uygulama rolü kimliği için bir değişken başlatın.
$AppRoleId= "<AppRoleId>"
7. Adım: Hedef kiracı bağlantısını test etme
Kaynak kiracı
Kaynak kiracıda Invoke-MgGraphRequest komutunu kullanarak hedef kiracıyla bağlantıyı test edin ve kimlik bilgilerini doğrulayın.
$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
8. Adım: Kaynak kiracıda sağlama işi oluşturma
Kaynak kiracı
Sağlamayı etkinleştirmek için kaynak kiracıda bir sağlama görevi oluşturun.
Kullanılacak eşitleme şablonunu ( gibi
Azure2Azure) belirleyin.Şablonda önceden yapılandırılmış eşitleme ayarları vardır.
Kaynak kiracıda, şablonu temel alan bir sağlama işi oluşturmak için New-MgServicePrincipalSynchronizationJob komutunu kullanın.
New-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -TemplateId "Azure2Azure" | Format-ListId : <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]}İş kimliği için bir değişken tanımlayın.
$JobId = "<JobId>"
9. Adım: Kimlik bilgilerinizi kaydetme
Kaynak kiracı
Kimlik bilgilerinizi kaydetmek için kaynak kiracıda Invoke-MgGraphRequest komutunu kullanın.
$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
10. Adım: Yapılandırmaya kullanıcı atama
Kaynak kiracı
Kiracı arası eşitlemenin çalışabilmesi için yapılandırmaya en az bir iç kullanıcı atanmalıdır.
Kaynak kiracıda, kuruluş içindeki bir kullanıcıyı yapılandırmaya atamak için New-MgServicePrincipalAppRoleAssignedTo komutunu kullanın.
$Params = @{ PrincipalId = "<PrincipalId>" ResourceId = $ServicePrincipalId AppRoleId = $AppRoleId } New-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $ServicePrincipalId -BodyParameter $Params | Format-ListAppRoleId : <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]}
11. Adım: Talep üzerine sağlama işlemini test edin
Kaynak kiracı
Artık bir yapılandırmanız olduğuna göre, kullanıcılarınızdan biriyle isteğe bağlı sağlamayı test edebilirsiniz.
Şema kuralı kimliğini almak için kaynak kiracıda Get-MgServicePrincipalSynchronizationJobSchema komutunu kullanın.
$SynchronizationSchema = Get-MgServicePrincipalSynchronizationJobSchema -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId $SynchronizationSchema.SynchronizationRules | Format-ListContainerFilter : 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 : {}Kural kimliği için bir değişken başlatın.
$RuleId = "<RuleId>"Test kullanıcısını isteğe bağlı olarak sağlamak için New-MgServicePrincipalSynchronizationJobOnDemand komutunu kullanın.
$Params = @{ Parameters = @( @{ Subjects = @( @{ ObjectId = "<UserObjectId>" ObjectTypeName = "User" } ) RuleId = $RuleId } ) } New-MgServicePrincipalSynchronizationJobOnDemand -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId -BodyParameter $Params | Format-ListKey : 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]}
12. Adım: Sağlama işini başlatma
Kaynak kiracı
Sağlama işi yapılandırıldığına göre, kaynak kiracıda sağlama işini başlatmak için Start-MgServicePrincipalSynchronizationJob komutunu kullanın.
Start-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId
13. Adım: Sağlamayı izleme
Kaynak kiracı
Artık sağlama işi çalışmaya başladığına göre kaynak kiracıda Get-MgServicePrincipalSynchronizationJob komutunu kullanarak geçerli sağlama döngüsünün ilerleme durumunu ve hedef sistemde oluşturulan kullanıcı ve grup sayısı gibi bugüne kadarki istatistikleri izleyin.
Get-MgServicePrincipalSynchronizationJob -ServicePrincipalId $ServicePrincipalId -SynchronizationJobId $JobId | Format-ListId : <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]}Sağlama işinin durumunu izlemeye ek olarak, sağlama günlüklerini almak ve gerçekleşen tüm sağlama olaylarını almak için Get-MgAuditLogProvisioning komutunu kullanın. Örneğin, belirli bir kullanıcıyı sorgulayıp kurulumunun başarıyla yapılıp yapılmadığını belirleyin.
Get-MgAuditLogDirectoryAudit | Select -First 10 | Format-ListActivityDateTime : 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 : {}
Sorun giderme ipuçları
Belirti - Yetersiz ayrıcalık hatası
Bir eylem gerçekleştirmeye çalıştığınızda, aşağıdakine benzer bir hata iletisi alırsınız:
code: Authorization_RequestDenied
message: Insufficient privileges to complete the operation.
Neden
Oturum açmış kullanıcının yeterli ayrıcalığı yok veya gerekli izinlerden birini onaylamanız gerekiyor.
Çözüm
Gerekli rollere atandığınızdan emin olun. Bu makalenin önceki bölümlerinde yer alan Önkoşullar bölümüne bakın.
Connect-MgGraph ile oturum açtığınızda, gerekli kapsamları belirttiğinizden emin olun. Bu makalenin önceki bölümlerinde yer alan 1. Adım: Hedef kiracıda oturum açma ve 4. Adım: Kaynak kiracıda oturum açma konusuna bakın.
Belirti - Yeni MgPolicyCrossTenantAccessPolicyPartner_Create hatası
Yeni bir iş ortağı yapılandırması oluşturmaya çalıştığınızda, aşağıdakine benzer bir hata iletisi alırsınız:
New-MgPolicyCrossTenantAccessPolicyPartner_Create: Another object with the same value for property tenantId already exists.
Neden
Büyük olasılıkla, muhtemelen önceki bir yapılandırmadan zaten var olan bir yapılandırma veya nesne oluşturmaya çalışıyorsunuz.
Çözüm
Söz diziminizi ve doğru kiracı kimliğini kullandığınızı doğrulayın.
Var olan nesneyi listelemek için Get-MgPolicyCrossTenantAccessPolicyPartner komutunu kullanın.
Mevcut bir nesneniz varsa Update-MgPolicyCrossTenantAccessPolicyPartner kullanarak bir güncelleştirme yapmanız gerekebilir
Belirti - Aynı Anahtar Değerine Sahip Birden Fazla Nesne İsteme hatası
Kullanıcı eşitlemesini etkinleştirmeye çalıştığınızda, aşağıdakine benzer bir hata iletisi alırsınız:
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.", ... }}}
Neden
Büyük olasılıkla daha önceki bir yapılandırmadan zaten var olan bir ilke oluşturmaya çalışıyorsunuz.
Çözüm
Söz diziminizi ve doğru kiracı kimliğini kullandığınızı doğrulayın.
Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization komutunu kullanarak
IsSyncAllowedlisteleyin.(Get-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId).UserSyncInboundMevcut bir ilkeniz varsa, kullanıcı eşitlemesini etkinleştirmek için Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization komutunu kullanarak bir güncelleştirme yapmanız gerekebilir.
$Params = @{ userSyncInbound = @{ isSyncAllowed = $true } } Set-MgPolicyCrossTenantAccessPolicyPartnerIdentitySynchronization -CrossTenantAccessPolicyConfigurationPartnerTenantId $SourceTenantId -BodyParameter $Params