Аутентификация домена из .NET Client через VPN - PullRequest
1 голос
/ 28 апреля 2010

Я пишу приложение ClickOnce WPF, которое иногда будет использоваться через VPN. Приложение использует ресурсы, доступные только для пользователей, прошедших проверку домена. Некоторые из них включают доступ к отчетам SSRS, доступ к LDAP для поиска информации о пользователях, доступ к веб-службам и т. Д.

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

  1. Какой рекомендуемый подход для аутентификация пользователей домена более VPN?
  2. Как безопасно хранить учетные данные?

Я нашел несколько статей, но в последнее время опубликовано не так много, и многие решения кажутся хакерскими или не очень безопасными (т. Е. Хранятся строки с открытым текстом в памяти).

Было бы здорово, если бы я мог использовать ActiveDicrtoryMembershipProvider, но, похоже, он предназначен для использования в веб-приложениях.

EDIT: Вышесказанное является своего рода обходным путем. Пользователь должен ввести свои учетные данные домена для аутентификации в VPN. Было бы идеально получить доступ к учетным данным, которые пользователь уже ввел для входа в VPN вместо WindowsIdentity.GetCurrent () (который возвращает пользователя, вошедшего в компьютер). Любые идеи о том, как это может работать? Мы используем Juniper Networks для подключения к VPN.

Ответ Я закончил тем, что делал в основном то, что было предложено в ссылке ниже . Когда приложение запустится, я обнаружу, находится ли пользователь в домене. Если это так, я буду использовать эти учетные данные при вызове служб. Если пользователь находится в VPN (но не на машине, прошедшей проверку подлинности в домене), я запрашиваю учетные данные пользователя и проверяю подлинность с помощью System.DirectoryServices. Если пользователь предоставит действительные учетные данные, я сохраню домен, пользователя и пароль в SecureString. Затем приложение использует эту информацию для создания учетных данных для передачи различным службам.

Спасибо!

1 Ответ

1 голос
/ 28 апреля 2010

Этот ответ на вопрос может помочь.

- EDIT -

  • Если клиент регистрируется под своими учетными данными AD, то WindowsIdentity.GetCurrent() вернет действительный WindowsIdentity.

  • Если клиент не вошел в домен, вы можете предоставить всплывающее окно с запросом учетных данных AD.

Ну, просто думаю ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...