Хранить имя пользователя и пароль для аутентификации ASP.NET - PullRequest
0 голосов
/ 12 января 2011

У меня есть служба (WCF), с которой свяжется моя страница ASP.NET.Служба WCF хэшировала пароли в своем хранилище данных (файл на самом деле).Служба WCF требует имя пользователя и хешированный пароль при каждом вызове.

В настоящее время проблема, с которой я сталкиваюсь, заключается в том, что если я аутентифицирую пользователя с помощью аутентификации по формам в ASP.NET, cookie-файл будет сохранен на компьютере пользователя после аутентификации пользователя, но я хотел бы сохранить имя пользователя.и хэшированный пароль, чтобы пользователь мог использовать сервис WCF.Где должна храниться эта информация, чтобы она была безопасной и надежной?

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

Ответы [ 2 ]

0 голосов
/ 12 января 2011

Определенно не на стороне клиента (куки). Используйте cookie для аутентификации пользователя в ASP и для идентификатора сеанса. Это ASP.NET по умолчанию. Чем хранить имя пользователя и PW в сеансе.

Рассмотрите возможность использования проверки подлинности Windows или других рекомендуемых механизмов, поскольку они обеспечат большую безопасность.

@ ваше редактирование: я предлагаю продолжать использовать аутентификацию форм вместе со связанными элементами управления (или любым другим предварительно реализованным методом в ASP.NET). Реализация этого самостоятельно создаст большие затраты без всякой причины - по крайней мере, если вы захотите получить ту же безопасность, что и аутентификация .NET. Это действительно больше, чем сравнение хешированных паролей! Кроме того, используйте сеанс, поскольку это естественное место для хранения любых дополнительных данных, связанных с пользователем. Опять же - сессии легко настраиваются и относительно безопасны.

0 голосов
/ 12 января 2011

Можете ли вы сохранить имя пользователя и пароль (конечно, хэшированные) в другом файле cookie? Каждый раз, когда вы общаетесь, захватите cookie и отправьте его вместе с именем пользователя в службу WCF.

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

С уважением к вашему редактированию:

Не уверен, что между ними есть большая разница, как вы предлагаете. Если вы используете проверку подлинности с помощью форм, создается переменная сеанса и (при условии, что вы используете файлы cookie) сохраняется cookie, который позволяет связать переменную сеанса с пользователем. Поэтому, даже если вы используете аутентификацию на основе форм, вы все равно используете переменные сеанса.

Единственный вопрос на самом деле заключается в том, хотите ли вы сохранить хешированную версию пароля, введенного пользователем, в сеансе / файле cookie. Преимущество заключается в том, что он хранится где-то и потенциально может представлять угрозу безопасности.

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

Токен может быть выдан при успешном входе в систему и должен использовать тот же алгоритм хеширования, что и WCF. Отправьте имя пользователя и токен как часть запроса и подтвердите, что он действителен, авторизован и все еще актуален.

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