Аутентификация в OpenLDAP на Classic ASP

Вопрос или проблема

Моя цель – бороться с настоящим монстром: у меня есть старая классическая ASP (Active Server Pages), и мне нужно интегрировать систему аутентификации с протоколом OpenLDAP.

Я не могу изменить платформу, потому что у меня нет времени.

Мой LDAP-адрес выглядит примерно так:

address ="158.207.207.24:389/ou=listaccount,o=contoso,c=com"

Я использую код, похожий на этот:

Set objConnection = Server.CreateObject("ADODB.Connection")
Set objCommand = Server.CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Searchscope") = 2 'ADS_SCOPE_SUBTREE 
Set objRootDSE = GetObject("LDAP://" & address)

Я пытался перечислить свойства объекта objRootDSE.

Response.Write("<p>Перечисление:</p>")
  For Each obj in objRootDSE
       Response.Write(obj.ADsPath + "<BR>")
  netx

Где я получаю:

ADsPath: LDAP://158.207.207.24:389/ou=Office1,ou=listaccount,o=contoso,c=com
ADsPath: LDAP://158.207.207.24:389/ou=Office2,ou=listaccount,o=contoso,c=com
.....
ADsPath: LDAP://158.207.207.24:389/ou=Office30,ou=listaccount,o=contoso,c=com

Затем в этом фрагменте кода я получаю ошибку на Get(“defaultNamingContext”), которая не найдена.

strRootTDSE = objRootDSE.Get("defaultNamingContext")
Set objRootDSE = Nothing
objCommand.CommandText = _
    "SELECT distinguishedName FROM 'LDAP://" & strRootTDSE & "' " & _
        "WHERE objectCategory='user' AND sAMAccountName="" & UserToAuthenticate & """ 

Где я ошибаюсь?

Ответ или решение

Вопрос об интеграции аутентификации OpenLDAP с использованием Classic ASP – сложная задача, особенно учитывая устаревшую платформу и ограничения по времени. Ваша текущая попытка подключаться к OpenLDAP требует некоторых улучшений и исправлений. Давайте разберемся с тем, что вы делаете правильно и где возникают ошибки.

Шаг 1: Установка соединения с LDAP

Вы правильно начинаете с создания объектов ADODB.Connection и ADODB.Command. Однако, стоит учитывать, что для работы с OpenLDAP вам необходимо использовать правильный формат подключения. В случае использования OpenLDAP лучше заменить провайдер "Active Directory Provider" на более подходящий для LDAP, такой как "ADsDSOObject":

Set objConnection = Server.CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Шаг 2: Получение контекста корня

Ваш код для извлечения корневого контекста, где вы используете objRootDSE.Get("defaultNamingContext"), не работает, потому что метод Get() не находит defaultNamingContext. Попробуйте использовать другой способ для получения контекста, например:

Set objRootDSE = GetObject("LDAP://" & address)
strRootTDSE = objRootDSE.distinguishedName

Шаг 3: Формирование запроса

Обратите внимание на синтаксис SQL-запроса к LDAP. Убедитесь, что вы корректно формируете строку. Запрос должен выглядеть следующим образом:

objCommand.CommandText = _
    "SELECT distinguishedName FROM 'LDAP://" & strRootTDSE & "' " & _
    "WHERE objectCategory='person' AND sAMAccountName='" & UserToAuthenticate & "'"

Здесь несколько важных моментов:

  • Убедитесь, что вы используете правильное имя объекта: возможно, следует использовать objectCategory='person' вместо objectCategory='user'.
  • Убедитесь, что переменная UserToAuthenticate корректно инициализируется до выполнения запроса.

Шаг 4: Обработка ошибок и вывод результатов

После получения результатов запроса, вы должны обработать данные, а также учесть возможные ошибки. Например:

Set objRecordset = objCommand.Execute
If Not objRecordset.EOF Then
    ' Успешная аутентификация
    Response.Write("Аутентификация прошла успешно!")
Else
    ' Не удалось аутентифицировать
    Response.Write("Ошибка аутентификации.")
End If

Также обязательно добавьте обработку исключений для отлова ошибок соединения и выполнения команд.

Fine-Tuning и SEO

  • Убедитесь, что код хорошо документирован, чтобы другие разработчики могли понять его.
  • Используйте заголовки и мета-теги на странице для улучшения видимости в поисковых системах (например: “Аутентификация OpenLDAP с Classic ASP”).
  • Сохраняйте код чистым и организованным для улучшения читаемости и поддержки.

Следуйте приведенным рекомендациям и проверьте код на наличие ошибок. Установка аутентификации через OpenLDAP в Classic ASP потребует ряда поправок, но при правильном подходе результаты будут положительными.

Оцените материал
Добавить комментарий

Капча загружается...