среда, 8 сентября 2010 г.

Аутентификация на ресурсах домена через VPN

 

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

Собственно говоря я долго думал, с какой стороны подойти к вопросу. Странность в том, что это никак не стыкуется с моими познаниями в windows аутентификации вообще. В конечном итоге мне и пришла мысль – это cached credentials. Но, не хватало доказательств. Пришлось долго и нудно гуглить. В результате все оказалось достаточно просто:

The VPN server must authenticate the remote access VPN clients before they can access or generate traffic on the network. This authentication is a separate step from logging on to a Windows Server 2003 domain.

По-просту говоря, процесс аутентификации на VPN сервере и дальнейшая аутентификация на ресурсах домена никак не связаны между собой. И далее:

If the client computer is a member of the server's domain, then the client responds automatically with the user's logon credentials and gains access to resources for which the user has security permissions. If the client computer is not a member of the server's domain (for example, when the client is a non-domain member home computer), then the client does not have the appropriate logon credentials to meet the server's challenge; for each network resource the user attempts to access, the user is either prompted to enter credentials or is denied access.

When the client is running Windows XP or a Windows Server 2003 operating system, the credentials that are used for authentication to the remote access server are cached, or saved, by the client. If the non-domain member client attempts to access a domain server for which it has not previously established its credentials, the client responds to the server's challenge with the cached remote access credentials and gains access to resources for which the user has security permissions. Because the credentials are cached and sent automatically upon server challenge, users on non-domain member computers are not prompted for credentials every time they attempt to access network resources.

Ответ выделен. Если коротко – при доступе к ресурсам с недоменной машины имя и пароль будут запрошены. Однако, после того как они кэшируются на Windows XP и выше, больше запрашиваться не будут. Можно поставить следующий эксперимент для проверки:

Для чистоты эксперимента – логофф/логон.

Сначала смотрим на список кэшированных данных:

cache1

В моем случае он пустой. Следом за этим устанавливаем VPN соединение и опять смотрим список:

cache3

Пробуем зайти на любой ресурс, в моем случае это общая папка – все хорошо. Затем удаляем кэш и пробуем снова:

cache4

Получаем запрос на ввод пароля.

Заметьте, если вы введете пароль, вас пустит. Если поле этого вы удалите кэш и не перелогонитесь, пароль не будет спрашивать. По видимому, данные кэшируются где-то еще.

Вывод: нельзя простым и легальным способом получить контекст пользователя, который используется для аутентификации на VPN, поскольку для него не создается Logon сессия и, как следствие, искомый контекст. Этот вывод подтверждается например тут.

Отправить комментарий