У меня очень конкретный вопрос, и я не смог найти что-либо, связанное с этим вопросом в Интернете, поэтому я был бы очень рад узнать, пробовал ли кто-нибудь то же самое или может ли кто-нибудь помочь мне с этим.
Мы используем 389 Directory Server в сочетании с Azure Active Directory. Пользовательские данные хранятся в 389 DS и синхронизируются с Azure с помощью Azure AD Connect. Мы настроили эту синхронизацию с помощью мастера Azure AD Connect для настройки синхронизации между Azure и Windows Server AD, а затем изменили конфигурацию, чтобы она работала для 389 DS (как было предложено это сообщение в блоге). Это было сделано путем добавления универсального коннектора LDAP в диспетчер службы синхронизации и добавления необходимых правил в редактор правил синхронизации для 389 DS. Это действительно работает очень хорошо, лучше, чем ожидалось, за исключением того, что мы не можем заставить работать групповую синхронизацию.
Группы в 389 DS используют атрибут uniqueMember, как определено в RFC 4519 в котором не используется синтаксис DN / Reference. Чтобы синхронизировать этот атрибут с атрибутом member в Connect Metaverse, я попробовал следующие преобразования:
Но я всегда получаю следующую или связанную ошибку:
Attribute type - value mismatch. Received a string or binary multi-value, expected Reference value. Property name = member
at Microsoft.MetadirectoryServices.SyncRulesEngine.AttributeFlowModule.ConvertBackAsValueAdds(Value sourceValue, EntryPropertyDefinition targetPropertyDefinition)
at Microsoft.MetadirectoryServices.SyncRulesEngine.AttributeFlowModule.GetEntryPropertyModificationForExpressionFlow(AttributeFlowMapping attributeFlowMapping, IEntryModification sourceObject, IEntryModification targetObject, SynchronizationRule rule)
at Microsoft.MetadirectoryServices.SyncRulesEngine.AttributeFlowModule.PerformAttributeFlowMappingFlow(IEnumerable`1 annotatedAttributeFlowMappings, IEntryModification targetObject)
at Microsoft.MetadirectoryServices.SyncRulesEngine.AttributeFlowModule.PerformSyncRuleAttributeFlows(IEntryModification sourceObject, IEntryModification targetObject, SynchronizationRule synchronizationRule, Boolean applyExecuteOnceMappings)
at Microsoft.MetadirectoryServices.SyncRulesEngine.JoinModule.PiggyBackSyncRuleOnExistingLinks(SynchronizationRule syncRule, SyncRulePipelineArguments pipelineArguments, AttributeFlowModule attributeFlowModule)
at Microsoft.MetadirectoryServices.SyncRulesEngine.JoinModule.Execute(PipelineArguments argsToProcess)
at Microsoft.MetadirectoryServices.SyncRulesEngine.Server.SyncEngine.RunSyncPipeline(SyncRulePipelineArguments pipelineData, List`1 pipelineChain)
at Microsoft.MetadirectoryServices.SyncRulesEngine.Server.SyncEngine.Synchronize(SynchronizationOperation operation, IObjectLinkGraph inputGraph, Boolean preview)
at ManagedSyncRulesEngine.Synchronize(ManagedSyncRulesEngine* , CCsObject* sourceCsObject, CMvObject* mvObject, SynchronizationOperation operation, Char** error)
InnerException=>
none
Native call stack:
Используя преобразование с функцией Error, я смог подтвердить, что результат действительно является многозначным ссылочным типом, как я предполагаю, так и должно быть. Однако это не работает.
Ошибка ([uniqueMember]) приводит к:
InnerException=>
Argument 1 of function Error: expected type Microsoft.IdentityManagement.Synchronization.SyncRuleExpressions.Interpreter.StringValue, passed multivalue(string("uid=APerson,ou=People,dc=esmgquadrivium,dc=nl"), string("uid=AnotherPerson,ou=People,dc=esmgquadrivium,dc=nl"), string("uid=ACat,ou=People,dc=esmgquadrivium,dc=nl")).
Ошибка (CRef ([uniqueMember])) приводит к:
InnerException=>
Argument 1 of function Error: expected type Microsoft.IdentityManagement.Synchronization.SyncRuleExpressions.Interpreter.StringValue, passed multivalue(reference(uid=Dog,ou=People,dc=esmgquadrivium,dc=nl), reference(uid=Fish,ou=People,dc=esmgquadrivium,dc=nl), reference(uid=Plant,ou=People,dc=esmgquadrivium,dc=nl)).