Назад | Перейти на главную страницу

Уровни олицетворения WMI в коде vbscript / ASP

У меня есть веб-сайт IIS 7.5, на котором выполняется «классический» код ASP (не ASP.NET), где сайт работает в обычном контексте службы, и включена только «Проверка подлинности Windows». Пользователи и перемещаются по сайту без каких-либо проблем, независимо от того, имеют ли они неявные права администратора на хосте IIS или нет (большинство из них не имеют). Однако когда я пытаюсь выполнить обычный запрос Win32_PingStatus в коде ASP, он терпит неудачу, если у пользователя нет прав администратора на хосте IIS. Вот мой код ...

On Error Resume Next
asset = "Computer123"

pingtest = False
query = "Select StatusCode, Address FROM Win32_PingStatus " & _
  "WHERE Address=" & Chr(34) & asset & Chr(34)
Set colPingStatus = GetObject("winmgmts:" &_ 
  "{impersonationLevel=impersonate}//./root/cimv2").ExecQuery(query)
If err.Number <> 0 Then
  Response.Write "Access Denied (error: " & err.Number & " / " & err.Description & ")"
  Response.End
End If

For Each objItem In colPingStatus
  If objItem.StatusCode = 0 Then
    pingtest = True
  End If
Next

If pingtest = False Then
  Response.Write asset & " is OFFLINE"
Else
  Response.Write asset & " is ONLINE"
End If

Я пытался разобраться в возможностях олицетворения SWBEM и WMI, но я все еще не понимаю, возможно ли (поддерживается или не поддерживается) сделать это независимо от контекста сеанса пользователя / браузера. Каждый пользователь является учетной записью домена, анонимные пользователи не могут получить доступ к сайту, поэтому кажется (и я могу ошибаться) это связано с их членством в группах и разрешениями на хосте IIS.

Во-первых, это уровень доверия вашего веб-сайта в IIS. Войдите в IIS и убедитесь, что он установлен на полную, чтобы ваш сайт мог получить доступ к внутренним ресурсам сервера.

Затем нужно дважды проверить, действительно ли пользователи, обращающиеся к сайту, проходят аутентификацию и не запускают код анонимно. Просто чтобы убедиться, что анонимная аутентификация отключена в iis, и ваш сайт заставляет пользователей проходить аутентификацию (отключите автоматический вход в ntlm в вашем браузере или запишите идентификационный код пользователя в ваше приложение, чтобы быть уверенным, что аутентификация происходит вдвойне).

Затем нужно проверить разрешения wmi для типа пользователей, которые обращаются к вашему сайту. Вы можете использовать wmimgmt.msc, чтобы открыть настройки безопасности wmi для вашего сервера. Вы можете проверить свои разрешения wmi, войдя на свой сервер с обычным пользователем и попытавшись выполнить команды wmi (вы можете использовать get-wmiobject, wbemtest.exe или vbscript).