Я не знаю о лучших практиках, но я могу рассказать вам, что я делаю. Это не высокотехнологичная безопасность, но она делает свою работу.
Я использую аутентификацию форм. Я получаю пароль, защищенный с помощью ssl, через текстовое поле на странице входа. Я беру этот пароль и хеширую его. (Хеширование похоже на одностороннее шифрование, вы можете получить хеш-код, который нельзя вернуть обратно к паролю). Я беру этот хеш и сравниваю его с хешем пользователей в базе данных. Если хеш совпадает, я использую встроенную в аутентификацию asp.nets, которая обрабатывает куки для меня.
В классе FormsAuthentication есть методы, доступные для вас, такие как SetAuthCookie и RedirectFromLogin. они установят cookie и отметят их как аутентифицированных. Файл cookie, используемый asp.net, зашифрован. Хотя я не могу говорить о его уровне безопасности, но он довольно широко используется.
В моем классе я делаю проверку пароля и использую FormAuth для обработки остальных:
if(SecurityHelper.LoginUser(txtUsername.Text, txtPassword.Text))
{
FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);
}