Я пишу приложение ClickOnce WPF, которое иногда будет использоваться через VPN. Приложение использует ресурсы, доступные только для пользователей, прошедших проверку домена. Некоторые из них включают доступ к отчетам SSRS, доступ к LDAP для поиска информации о пользователях, доступ к веб-службам и т. Д.
Когда пользователь входит в систему с компьютера, который не аутентифицирован в домене, мне нужно каким-то образом получить его учетные данные, аутентифицировать его в домене и сохранить его учетные данные.
- Какой рекомендуемый подход для
аутентификация пользователей домена более
VPN?
- Как безопасно хранить учетные данные?
Я нашел несколько статей, но в последнее время опубликовано не так много, и многие решения кажутся хакерскими или не очень безопасными (т. Е. Хранятся строки с открытым текстом в памяти).
Было бы здорово, если бы я мог использовать ActiveDicrtoryMembershipProvider, но, похоже, он предназначен для использования в веб-приложениях.
EDIT:
Вышесказанное является своего рода обходным путем. Пользователь должен ввести свои учетные данные домена для аутентификации в VPN. Было бы идеально получить доступ к учетным данным, которые пользователь уже ввел для входа в VPN вместо WindowsIdentity.GetCurrent () (который возвращает пользователя, вошедшего в компьютер). Любые идеи о том, как это может работать? Мы используем Juniper Networks для подключения к VPN.
Ответ
Я закончил тем, что делал в основном то, что было предложено в ссылке ниже . Когда приложение запустится, я обнаружу, находится ли пользователь в домене. Если это так, я буду использовать эти учетные данные при вызове служб. Если пользователь находится в VPN (но не на машине, прошедшей проверку подлинности в домене), я запрашиваю учетные данные пользователя и проверяю подлинность с помощью System.DirectoryServices. Если пользователь предоставит действительные учетные данные, я сохраню домен, пользователя и пароль в SecureString. Затем приложение использует эту информацию для создания учетных данных для передачи различным службам.
Спасибо!