Типы аутентификации при переключении с System.DirectoryServices на DirectoryServices.Protocols

Мне нужно знать эквивалентные значения AuthType из AuthenticationTypes, чтобы перейти с кода S.DS на код S.DS.P.

Я переписываю модуль подключения LDAP, который в настоящее время использует пространство имен System.DirectoryServices. Чтобы повысить совместимость с серверами, отличными от ActiveDirectory, я пытаюсь переписать весь код для использования System.DirectoryServices.Protocols (согласно предложению в «Руководстве разработчика .NET по программированию служб каталогов»). Все идет гладко, за исключением переход между использованием перечисления AuthenticationTypes к AuthType, используемому SD.Protocols.Мне нужно знать эквиваленты между ними, чтобы клиенты, использующие старый код, не теряли функциональность при выпуске нового кода.

Известные мне эквивалентности:
None -> Basic
Secure -> Negotiate (более или менее)
Anonymous -> None
SecureSocketsLayer -> установка LdapSessionOptions.SecureSocketsLayer в true


person Jakub    schedule 01.07.2011    source источник


Ответы (1)


Похоже, вы были на правильном пути.

Проведя небольшое исследование, я смог сопоставить почти все значения AuthenticationTypes:

Нет: AuthType.Basic

Безопасный: AuthType.Negotiate

Анонимный: AuthType.Anonymous

Подписание: LdapSessionOptions.Signing

Запечатывание: LdapSessionOptions.Sealing

SecureSocketLayer: LdapSessionOptions.SecureSocketLayer

Шифрование: то же значение, что и у SecureSocketLayer.

ReadonlyServer: LdapSessionOptions.LocatorFlag.WriteableRequired = false

Serverbind: используйте один из конструкторов LdapDirectoryIdentifier с аргументом fullQualifiedDnsHostName со значением true.

FastBind: не применяется, так как этот SDSP работает на более низком уровне.

Делегирование: соответствующий параметр не найден. Возможно, делегирование является неявным. Одним из способов проверки может быть преобразование кода на эту страницу и посмотрите, работает ли она.

Имейте в виду, что не все серверы, отличные от AD, будут поддерживать AuthType.Negotiate, так как это специфично для Windows. Есть несколько других вещей (например, некоторые значения LocatorFlag), которые также ничего не будут означать для систем, отличных от AD. Таким образом, будьте осторожны при преобразовании кода, предполагающего подключение к AD, поскольку некоторые предположения больше не будут безопасными.

person Artomegus    schedule 26.07.2011
comment
FastBind по-прежнему применяется, вы используете метод FastConcurrentBind() в SessionOptions соединения. Отличный ответ! - person Jakub; 01.08.2011
comment
@Jakub - FastConcurrentBind - это не то же самое, что FastBind. См. этот документ. - person Artomegus; 02.08.2011
comment
Похоже, что согласно этому документу, FastConcurrentBind и FastBind имеют одну и ту же основную цель (ускорение производительности), хотя это очень хорошо, они делают разные вещи. - person Jakub; 02.08.2011
comment
@Artomegus - у меня вопрос по аутентификации на серверах без AD (в частности, Novell). Вы упомянули, что AuthType.Negotiate зависит от Windows. Знаете ли вы, на что согласилась бы Novell? - person jp2code; 20.02.2018