poniedziałek, 24 października 2011

Using Forms Authentication with Membership and SQL Server

ASP.NET Membership umożliwia programiście łatwą walidację oraz zarządzanie danymi użytkowników aplikacji internetowej.
Udostępnia funkcjonalności do walidacji danych potwierdzających tożsamość użytkownika, tworzenie oraz modyfikowanie użytkowników, zarządzanie danymi użytkowników (takimi jak hasło lub adres e-mail).

Mechanizm ASP.NET membership pierwotnie został stworzony do wykorzystywania w aplikacjach ASP.NET istnieje jednak możliwość wykorzystywania go w aplikacjach tworzonych w innych technologiach (np. Windows Forms).

ASP.NET Membership wspiera następujące czynności:
  • Tworzenie nowych użytkowników;
  • Przechowywanie informacji o użytkowniku (np. login, hasło) w Microsoft SQL Sever, Active Directory lub innych alternatywnych źródłach danych;
  • Uwierzytelnianie użytkowników odwiedzających aplikację internetową;
  • Zarządzanie hasłami;
  • Przypisanie użytkownikowi unikalnego identyfikatora, dzięki któremu można identyfikować go z pozostałymi elementami aplikacji lub integrować z takimi mechanizmami jak autoryzacja lub personalizacja;
  • Stworzenie własnego membership providera;
Mechanizm uwierzytelniania Forms korzysta z membership providera przy dostępie do źródła danych, w których są przechowywane dane wykorzystywane do potwierdzenia tożsamości użytkownika.

Aby wykorzystać w aplikacji ASP.NET membership provider należy odpowiednio skonfigurować aplikację.

Przygotowanie bazy
Można to zrobić w dwojaki sposób.
  • Pierwszy – wykorzystując program aspnet_regsql.exe. (C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319)
    Kreator tworzący tabele do UserManagement, ProfileManagement i RoleManagement. 
  • Drugi sposób – otworzyć katalog z .NET Framework 2.0 (u mnie jest to: C:\Windows\Microsoft.NET\Framework\v2.0.50727\ ) i odpalić w SQL 3 skrypty: InstallCommon.sql, InstallMembership.sql oraz InstallRoles.sql. 
Po utworzeniu tabel można je dostosować do naszych potrzeb. Np. dodanie dodatkowych kolumn do User (nie zalecam nic usuwać) - kolumnę id_user INT, która będzie nam łączyła rozwiązanie Membership Providera z resztą naszej aplikacji.
W sekcji configuration w web.config należy dodać ConnectionString do połączenia z bazą zawierającą nasze tabele Membership Providera, a poza tym 3 sekcje: authentication, membership i roleManager.
Szczegóły: Wstęp do ASP.NET Membership Provider



Ustawienie w pliku konfiguracyjnym sekcji authentication
Ustawiamy sposób uwierzytelniania na Forms Authentication 

<authentication mode="Forms"> 
  ...
</authentication>

Ustawienie w pliku konfiguracyjnym sekcji membership
Nalezy ustawić opcję membership providera w pliku konfiguracyjnym web.config. Domyślnie membership provider jest włączony. Dodatkowo programista może zdefiniować, z jakiego typu membership providera chce korzystać (w praktyce oznacza to, że określa typ bazy danych oraz jej lokalizację). Domyślny membership provider wykorzystuje do przechowywania danych użytkowników silnik bazy danych MS SQL Server. Programista może również użyć do przechowywania danych Active Directory lub inne źródło danych;
membership Element
Poniższy przykład kodu pokazuje, jak skonfigurować aplikacje ASP.NET do korzystania dostawcy SqlMembershipProvider do przechowywania i pobierania informacji o koncie użytkownika.

<configuration>
    <connectionStrings>
        <add name="SqlServices" 
             connectionString="Data Source=MySqlServer;Integrated Security=SSPI;Initial 
             Catalog=aspnetdb;" />
    </connectionStrings>
    <system.web>
        <membership 
             defaultProvider="SqlProvider"
             userIsOnlineTimeWindow="20">
             <providers>
                <remove name="AspNetSqlProvider" />
                <add name="SqlProvider"
                    type="System.Web.Security.SqlMembershipProvider"
                    connectionStringName="SqlServices"
                    enablePasswordRetrieval="false"
                    enablePasswordReset="true"
                    requiresQuestionAndAnswer="true"
                    passwordFormat="Hashed"
                    applicationName="/" />
            </providers>
        </membership>
    </system.web>
</configuration>

Materiały:
Managing Users by Using Membership
Create a Minimal ASP.NET Membership Website
70-562:Using ASP.NET Membership
ASP.NET 3.5 Basic User Account Management
Authentication vs. Authorization
Wstęp do ASP.NET Membership Provider
Membership and Role Providers in ASP.NET 2.0
Using Forms Authentication with Membership Providers in ASP.NET 2.0
ASP .NET Security, Membership, Forms Authentication, Logging in and Logging out.
Security Tutorials
Examining ASP.NET's Membership, Roles, and Profile
Membership Class
MembershipProvider Class
FormsAuthentication Class
Walkthrough: Creating a Web Site with Membership and User Login
ASP.NET Providers for the ADO.NET Entity Framework
How To: Use Membership in ASP.NET 2.0
Sample Role-Provider Implementation
How To: Use Forms Authentication with SQL Server in ASP.NET 2.0
Custom Membership and Role Providers using NHibernate
Using the ASP.NET Membership Provider and Authentication Service from Windows Phone 7
SQL Compact ASP.NET Membership, Role and Profile provider
ASp.net 2.0 step by step Membership Provider
Getting started with ASP.NET Membership, Roles, and Profiles
ASP.NET 2.0 Membership, Roles, Forms Authentication, and Security Resources
ASP.NET Membership
Integracja ASP.NET Membership z własną bazą MS SQL
add Element for providers for membership
User Class
ASP.NET Membership Provider Part 1
Storing Additional User Information
Managing Users by Using Membership
How to: Use the ASP.NET Membership Provider
Creating the Membership Schema in SQL Server
WalkThrough: aspnet_regsql.exe in ASP.Net 4
ASP.NET authentication and authorization
ASP.NET 2.0 Provider Model: Introduction to the Provider Model
Explained: Forms Authentication in ASP.NET 2.0
Kontrolki uwierzytelniające ASP.NET

Brak komentarzy:

Prześlij komentarz