У меня есть устаревшее приложение, основанное на ASP Classic.Чтобы защитить приложение, я проверяю, что зарегистрированный пользователь является членом определенной группы AD, и я возвращаю немного полезной информации (например, полное имя, адрес электронной почты и т. Д.).
Это должнобыть довольно обычным делом, и несколько лет назад я сменил свой первоначальный (забытый) подход на текущий.Реализовать его было немного неудобно, потому что он пересек ряд технических областей, о которых я относительно мало знал, но система работала нормально.
Выполните несколько серверных ходов позже (каждая из которых была битвой за восстановлениевнедрить систему), и я не столкнулся с еще одним или тремя ходом.Пока я изо всех сил пытаюсь заставить вещи работать.Мой код, я полагаю, все еще в порядке, но проблема в конфигурации сервера.Разрешения, SETSPN, делегирование Kerberos и т. Д. *
Итак, вопрос в том, что мне делать, чтобы сделать эту работу, или, альтернативно, есть другой подход, который я могу использовать.Мои целевые серверы - это стандартные блоки Server 2008 и Server 2008 R2 в одном домене AD.
Мой ASP выглядит следующим образом:
If Session("UID") = "" then
Dim oWshNetwork, oADSysInfo, oCurrentUser, sUserName, sComputerName
Dim sGroups
Set oWshNetwork = CreateObject("WScript.Network")
Set oADSysInfo = CreateObject("ADSystemInfo")
Set oCurrentUser = GetObject("LDAP://" & oADSysInfo.UserName)
Session("UID") = LCase(oWshNetwork.UserName)
Session("Name") = oCurrentUser.FullName
Session("Computer") = LCase(oWshNetwork.ComputerName)
Select Case VarType(oCurrentUser.MemberOf)
Case 8
sGroups = LCase(oCurrentUser.MemberOf)
Case 8204
sGroups = LCase(Join(oCurrentUser.MemberOf))
End Select
If InStr(1, sGroups, "myApp_Users",1) Then
Session("Auth") = 1
Else
Session("Auth") = 0
End If
If InStr(1, sGroups, "myApp_Admins",1) Then
Session("Admin") = 1
Else
Session("Admin") = 0
End If
Set oWshNetwork = nothing
Set oADSysInfo = nothing
Set oCurrentUser = nothing
End If
Я запускаю эти приложения в пуле приложенийс удостоверением пользователя домена.
Этот пользователь домена имеет разрешения на чтение и выполнение приложения.
Делегирование Kerberos включено для каждого сервера:
Trust the computer for delegation to any service (Kerberos only)
Iнастроены имена участников-служб для пользователя домена следующим образом:
http/myServer
http/myServer.mydomain.net
Тем не менее, когда я запускаю приложение, мой код падает при первом вызове GetObject:
error '800704bc'
Может ли кто-нибудь помочьраз и навсегда отладьте эту проблему или предоставьте альтернативу, если она есть.Конечно, я бы хотел перестроить в .NET, но это не вариант.