Работаем с Active Directory

На Интранет ресурсах нужно проводить аутентификацию, как правило, для того чтобы разграничить доступ пользователей к тем или иным блокам сайта.

Для этих целей мною было написано несколько кусков кода, в т.ч. один класс.

Архив с классом и его окружением можно взять здесь.

В архиве файлы:
auth.asp базовая функция аутентификации
auth_func.asp функция поиска принадлежности пользователя к группе
ClassesAD.asp класс работы с Active Directory
ClassesADconfig.asp конфигурационные константы для работы с AD

Непосредственно в коде главной страницы должны быть подключены только первые два файла, а файлы класса и его константы грузятся из первого файла. Код файлов в архиве мною откомментирован, и надеюсь разобраться в нем будет не сложно.

Далее, приведу пример того, как это можно использовать:

Допустим главная страница - index.asp, тогда ее код будет такой:

<%
' Проверяем, что содержимое страницы не кэшировалось у пользователя
  response.expires = -1
  response.expiresabsolute = Now() - 1
  response.addHeader "pragma", "no-cache"
  response.addHeader "cache-control", "private"
  response.cachecontrol = "no-cache"
  Response.Buffer = True
  Session.LCID = 1049 
%>
<!--#include virtual="/incl/auth.asp"-->
<!--#include virtual="/incl/auth_func.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Служебный сайт</title>
{ тут подгружаем CSS и скрипты }
</head>
<body>
<%
{ проводим аутентификацию пользователя, которая сохраняется в сессии }
authentication
%>
{ тут выводим что-нибудь в тело страницы }
{ если нужно вывести что-то, что могут видеть только администраторы, проверяем и выводим }
<%
if ingrp("Domain Admins") then admins = true else admins = false end if
if admins then
Response.Write "Вы Администратор!!!"
end if
%>
{ заканчиваем вывод и закрываем все теги }
<script type='text/javascript' language='javascript'>document.getElementById('wait').style.display='none';</script>
</body>
</html>

В принципе, в дальнейшем, на других страницах, если на них попадают исключительно и только с главной, можно использовать подгружаемый скрипт <!--#include virtual="/incl/auth_func.asp"--> и задействовать только одну функцию ingrp, проверяя принадлежность к той или иной группе пользователя, т.к. после аутентификации все данные хранятся в сессии.

А в итоге, при заходе пользователя на страницу, сайт пару секунд будет выдавать картинку "ЖДИТЕ", за это время пройдет полная аутентификация, после чего она исчезнет и на ее место выльется содержимое страницы сайта.
Comments