Подход для замены проверки подлинности форм в приложении .NET - PullRequest
0 голосов
/ 24 декабря 2010

Мой вопрос касается подхода, и я ищу советы или ссылки, которые помогут мне разработать решение. У меня есть приложение веб-форм .NET 4.0, которое работает с проверкой подлинности с помощью форм, используя базу данных пользователей и пароли aspnetdb SQL. Новой функцией приложения является новый механизм аутентификации, использующий единый вход для предоставления доступа тысячам новых пользователей. По сути, когда пользователь входит в систему с помощью нового метода единого входа, я смогу идентифицировать их как законных пользователей с ролью.

Так что у меня будет что-то вроде HttpContext.Current.Session ["email_of_authenticated_user"] (их личность) и HttpContext.Current.Session ["role_of_authenticated_user"] (их роль) .

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

Поэтому мой вопрос заключается в том, как использовать пользователя и роль на уровне сеанса, которые мне действительно нужны, чтобы «имитировать» все достоинства проверки подлинности форм, например принудительное выполнение:

[System.Security.Permissions.PrincipalPermission(System.Security.Permissions.SecurityAction.Demand, Role = "Student")]

или

<authorization>
    <allow users="wilma, barney" />
</authorization>

Спасибо за любые указатели.

1 Ответ

3 голосов
/ 24 декабря 2010

Я думаю, вы путаете Forms Authentication с SqlMembershipProvider.

Аутентификация по формам - это средство, с помощью которого ASP.NET генерирует и авторизует пользователей. Это не определяет конкретную реализацию того, как это делается. Он только обеспечивает способ, которым после проверки подлинности приложение может использовать эти учетные данные в приложении через систему «тикетов», которая сохраняется в виде файла cookie.

По сути, в Windows есть только два вида аутентификации: проверка подлинности с помощью форм и проверка подлинности Windows. Так как ваш новый метод не основан на Windows, вам придется использовать проверку подлинности с помощью форм (если вы просто не игнорируете материал, встроенный в asp.net, и сами все прокручиваете, что довольно глупо).

Возможно, вы захотите заглянуть в Windows Identity Foundation , поскольку он предоставляет подключаемую архитектуру для идентификации, включая различные веб-методы единого входа.

...