#asp.net #httpwebrequest #server.transfer
#asp.net #httpwebrequest #сервер.передача
Вопрос:
Технология ASP.NET, VB.NET 2.0 (скоро будет 4.0)
Обзор Я пишу портал входа / аутентификации, чтобы веб-приложение могло использовать его для входа пользователя в систему, а затем они могли использовать приложение, используя свои учетные данные.
Портал входа в систему будет отдельным приложением, и первоначально он будет доступен только через экстранет, а также интранет для определенных приложений; но будущим приложениям потребуется проходить аутентификацию через Интернет (будем рады реализовать как отдельный экземпляр). По сути, я хочу, чтобы другие отдельные приложения могли проверять подлинность пользователей через этот портал.
Так что…
- Пользователь переходит по веб-адресу приложения (т.е. www.application.com / http://apps/application — интрасеть) и нажимает «войти».
- Браузер пользователя перенаправляется в приложение портала со строкой запроса www.loginportal.com/login.aspx?url=www.application.com/login.aspx (или другая страница).
- Пользователь вводит свои учетные данные (имя пользователя, пароль) и нажимает кнопку «войти».
- Браузер перенаправляет обратно на URL, т. е. www.applications.com/default.aspx или login.aspx и проходит проверку подлинности и входит в систему; и может использовать приложение.
Завершено, сама аутентификация отсортирована и будет реализована в виде библиотеки классов в локальных приложениях через dll.
Нужно Итак, мне в принципе нужно знать, как:- 1. Отправить данные в URL портала (может быть другой домен). 2. Перенаправьте браузер с помощью post. 3. Убедитесь, что аутентификация безопасна и ее нелегко взломать (я знаю, как использовать urlencode и htmlencode и т.д.) — Просто не уверен в последствиях размещения данных в разных доменах.
Любая помощь приветствуется…
Приветствую, Дункан.
Ответ №1:
Здесь действительно сложная штука. На моем месте я бы сильно полагался на Windows Identity Foundation. Я считаю, что он может поддерживать этот сценарий (на самом деле я этого не делал; кто-то другой в моей компании разрабатывает против него).
Ответ №2:
Хорошо, итак, это решение, которое я в конечном итоге использовал:
В исходном приложении (том, которому требуется аутентификация; шаг 1 выше) Я перенаправляю пользователя на свой портал входа и включаю исходный URL-адрес в качестве параметра get. Затем пользователь вводит свои данные, имя пользователя и пароль.
Затем серверный код проверяет их подлинность и перенаправляет на новую страницу, где я отправляю обратно на страницу html-форму, которая включает дату и время запроса (для безопасности) вместе с зашифрованной строкой (включая дату и время запроса) данных, которые я хочу отправить обратно в исходную форму.
Я также добавляю метод JavaScript post, который отправляет данные на исходный URL в виде формы post. Поскольку я использую одну и ту же библиотеку классов на обоих концах, я могу шифровать и расшифровывать данные одним и тем же методом, а исходное запрашивающее приложение имеет все пользовательские данные, включая возможность проверки даты и времени запроса (я разрешаю установить промежуток времени между аутентификацией и получением исходное приложение, убедившись, что это в пределах, скажем, 5 минут.
И работа выполнена.
Если кому-то нужен код, я могу его предоставить, просто у меня его сейчас нет с собой, если я вспомню, я его опубликую.
Не самое элегантное решение, но оно работает и безопасно, так что я доволен. :).