Аутентификация по формам - PullRequest
5 голосов
/ 13 марта 2009

Я давно программирую, но я не самый опытный в мире разработчик .Net. Недавно я выбрал проект, который использует проверку подлинности с помощью форм для своего веб-сайта. Сначала я посмотрел на аутентификацию форм в .Net 1.1, и в то время у нее были некоторые ограничения, которые заставили меня принять решение не использовать ее в качестве основной формы аутентификации.

Этот проект требует, чтобы у пользователей были роли (которые, как я понимаю, поддерживает аутентификацию форм) и членство в группах. Например, «Пользователь А» является «Администратором» для «Компании А». Аутентификация форм теперь поддерживает такую ​​структуру пользователей?

Я также читал, что проверка подлинности с помощью форм отправляет пароли в виде простого текста. Этот клиент не использует SSL. Это правда?

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

Я искал в интернете статьи типа «за» и «против», но не повезло. Что вы, ребята, думаете?

Ответы [ 7 ]

5 голосов
/ 13 марта 2009

Чтобы удовлетворить ваши требования, вы будете использовать Аутентификацию по формам с Членство . Если ваше приложение использует базу данных SQL Server, вы можете использовать SQLMembershipProvider в качестве поставщика членства для достижения этой цели.

Изучение членства, ролей и профиля ASP.NET 2.0 может быть хорошим началом.

О вашей заботе об отправке паролей в виде простого текста, когда соединение не защищено.

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

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

1 голос
/ 13 марта 2009

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

1 голос
/ 13 марта 2009

Forms Auth - отличный выбор для того, что вам нужно. Он поддерживает роли, но не поддерживает группы. Тем не менее, он имеет встроенную поддержку для интеграции активных каталогов, которую вы можете использовать для облегчения проблемы группы, если это необходимо. Лично я бы придерживался того, что у вас есть, и узнал бы больше об этом. Если вы хотите использовать режим форм для проверки подлинности с помощью форм, а не режим проверки подлинности AD, я хотел бы рассмотреть возможность поддержки групп с использованием существующей базы данных проверки подлинности с помощью форм.

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

Да, я только что пересмотрел твой вопрос, и ты сказал, что они не используют SSL. Насколько безопасным должен быть этот сайт? Для меня это был бы мой первый заказ - перейти на SSL!

1 голос
/ 13 марта 2009

Проверка подлинности с помощью форм не отправляет пароли в виде простого текста. До тех пор, пока вы убедитесь, что логин / pwd защищен при получении (т. Е. С использованием https ... ssl), в нем нет угрозы безопасности.

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

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

Пароли должны передаваться открытым текстом по проводам, если вы не используете SSL. Отсюда необходимость SSL.

.Net Аутентификация на основе форм правильно хэширует и сохраняет пароль в БД, однако это не защитит учетные данные по проводам. Но это справедливо для всех веб-фреймворков.

Что касается групповой части этого, вам придется реализовать это в своем приложении или найти несколько библиотек, которые могут вам помочь.

0 голосов
/ 13 марта 2009

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

Хотя я разрабатываю с помощью Visual Studio и платформы .Net, мне не всегда нравится делать вещи «Microsoft». Я обнаружил, что много раз «Microsoft» вводит много накладных расходов, которых можно избежать, если вы знаете, что делаете.

Еще раз спасибо за ввод.

0 голосов
/ 13 марта 2009

БД не хранит простой текст пароля, который использует md5 или некоторые другие средства хеширования ... я знаю, что они сопоставляют 2 строки хеширования друг с другом, чтобы аутентифицировать, преобразуют ли они строку на стороне клиента или на стороне сервера, я не уверен ... это, вероятно, браузер ... если вы думаете об использовании ssl, я не думаю, что вам следует использовать аутентификацию форм ASP.net ... пришло время для вас сделать свою собственную аутентификацию на основе форм и погрузиться в некоторый анализ рекламы .. ..

...