Привет,
Есть вопрос
Версия: 7.13.4.638_SalesEnterprise_Marketing
Место: LDAP интеграция
Описание: Пишу интеграцию со сторонней системой.
Система передает набор данных в бизнес процесс. Среди данных есть SID формата S-1-5-21-1507001333-1204550764-1011284298-1003. В BPM настроена интеграция LDAP. В свойствах интеграции идентификатор пользователя задан как objectSid. Однако в БД в [LDAPElement].[LDAPEntryId] записана строка, по формату отличающаяся от SID. Я предполагаю, что в данное поле пишется SID, но перед этим он проходит обработку.
Вопрос: Есть ли в backend api Terrasoft метод/класс, позволяющий получить корректный SID пользователя? И если нет, то каким образом я могу выполнить преобразование из значения LDAPElement].[LDAPEntryId] в SID?
Нравится
Логика работы с LDAP реализована в БП SyncWithLDAPProcess, схемах LDAPSysSettingsService, SyncWithLDAPProcessHelper, LDAPUtility, LDAPUtilities. В последней встречается функция, вызывающая подозрение, что обработка заключается в банальном взятии хэша MD5:
private string GetEntryIdentityAttribute(SearchResultEntry entry, string attributeName) { object attributeValue = entry.Attributes[attributeName][0]; if (!(attributeValue is byte[])) { return Convert.ChangeType(attributeValue, typeof(string)).ToString(); } var hasher = MD5.Create(); byte[] data = hasher.ComputeHash(attributeValue as byte[]); var sb = new StringBuilder(512); for (int i = 0; i < data.Length; i++) { sb.Append(data[i].ToString("x2")); } return sb.ToString(); }
Соответственно, получить обратно objectSid в описанном формате по нему не получится.
Логика работы с LDAP реализована в БП SyncWithLDAPProcess, схемах LDAPSysSettingsService, SyncWithLDAPProcessHelper, LDAPUtility, LDAPUtilities. В последней встречается функция, вызывающая подозрение, что обработка заключается в банальном взятии хэша MD5:
private string GetEntryIdentityAttribute(SearchResultEntry entry, string attributeName) { object attributeValue = entry.Attributes[attributeName][0]; if (!(attributeValue is byte[])) { return Convert.ChangeType(attributeValue, typeof(string)).ToString(); } var hasher = MD5.Create(); byte[] data = hasher.ComputeHash(attributeValue as byte[]); var sb = new StringBuilder(512); for (int i = 0; i < data.Length; i++) { sb.Append(data[i].ToString("x2")); } return sb.ToString(); }
Соответственно, получить обратно objectSid в описанном формате по нему не получится.