Wyklad TI 12

background image

1

Technologie internetowe

Wykład 12

Kontrola dostępu w ASP.NET

Podstawowe pojęcia

Autentykacja – proces rozpoznania i
uwierzytelnienia użytkownika

Autoryzacja – proces sprawdzenia, czy
rozpoznany użytkownik ma uprawnienia
do wykonywania określonych operacji,
dostępu zasobów

background image

2

Implementacja uwierzytelnienia na
zmiennych sesyjnych

protected void btnLoguj_Click(object sender, EventArgs e)

{

SqlConnection polaczenie =

new SqlConnection(WebConfigurationManager.ConnectionStrings["bazaUzytkownikow"].ConnectionString);

SqlCommand polecenie =

new SqlCommand("SELECT COUNT(*) FROM Uzytkownicy WHERE Nazwa=@Nazwa AND Haslo=@Haslo", polaczenie);

polecenie.Parameters.Add("@Nazwa", SqlDbType.NVarChar, 20).Value = txtNazwa.Text;
polecenie.Parameters.Add("@Haslo", SqlDbType.NVarChar, 20).Value = txtHaslo.Text;
polaczenie.Open();
int ile = (int)polecenie.ExecuteScalar();
if (ile > 0)
Session["uzytkownik"] = "Slawek";

Response.Redirect(Server.UrlDecode(Request.QueryString.ToString()));

else lblInfo.Text = "Zła nazwa użytkownika lub hasło";

}

Logowanie.aspx

protected void Page_PreInit(object sender, EventArgs e)

{

if (Session["uzytkownik"] == null)
{

Response.Redirect("Logowanie.aspx?" + Server.UrlEncode(Request.Url.ToString()));
Response.End();

}

}

Strona chroniona

Metody uwierzytelnienia w ASP.NET

Windows

Wykorzystuje mechanizmy uwierzytelnienia MS Windows

Zarządzanie użytkownikami w ramach narzędzi
administracyjnych Windows

Stosowana dla ograniczonej puli użytkowników

Form

Użytkownicy składowani w dedykowanej bazie danych

Dane uwierzytelniające przekazywane przez formularz HTML

Zarządzanie użytkownikami poprzez strony WWW

Stosowana dla nieograniczonej puli użytkowników

Password

Pula użytkowników wspólna dla wielu serwisów

Dane użytkowników składowane na serwerze MS

background image

3

Uwierzytelnienie Windows

Basic – hasło i login przesyłane w
nagłówku HTTP

Digest – hasło hashowane

NTLM, Kerberos

Certyfikaty klienta

Uwierzytelnienie Forms

Autentykacja przez wpisanie login i hasła
w formularzu umiewszonym na stronie

Zalecane wykorzystanie protokołu SSL

Użytkownicy przechowywani w:

Bazie danych

Pliku XML

Innym składowisku danych

background image

4

Konfiguracja uwierzytelnienia Forms

<system.web>

<authentication mode="Forms">

<forms loginUrl="~/Logowanie.aspx" />

</authentication>
<authorization>

<deny users="Jacek,Placek" />
<deny users="?"/>

</authorization>

</system.web>

<system.web>

<authorization>

<allow users="Administrator"/>
<deny users="*"/>

</authorization>

</system.web>

•- wszyscy uwierzytelnieni i anonimowi

użytkownicy

? - użytkownicy anonimowi

Uwaga ! O pierwszeństwie wpisów
autoryzujących decyduje ich kolejność.

<connectionStrings>
<add name="

LocalSqlServer

” connectionString="data source=.\SQLEXPRESS;

Integrated Security=SSPI;

AttachDBFilename=|DataDirectory|aspnetdb.mdf;

User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config

<membership><providers><add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider,
System.Web, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"

connectionStringName="LocalSqlServer"

enablePasswordRetrieval="false"

enablePasswordReset="true" requiresQuestionAndAnswer="true"
applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="1„

passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>

</providers></membership>
</system.web>

ASP.NET Configuration - Użytkownicy

background image

5

Mechanizm providerów

Składnica

danych

Provider

ASP.NET

I

N
T
E
F
R
E

J

S

Zalety:
• swoboda łączenia ASP.NET z dowolnym składowiskiem danych
• możliwość korzystania z wszystkich udogodnień ASP.NET
• stosunkowo proste tworzenie własncych providerów

Struktura bazy dla użytkowników

background image

6

Kontrolka Login

Właściwości:
• TitleText
• UserNameLoginText
• PasswordLabelText
• RememberMeText
• LoginButtonText

<asp:Login ID="Login1" runat="server"></asp:Login>

Zdarzenia:
• Authenticate

Kontrolka CreateUserWizzard

<asp:CreateUserWizard ID="CreateUserWizard1"

runat="server">

<WizardSteps>

<asp:CreateUserWizardStep runat="server" />
<asp:CompleteWizardStep runat="server" />

</WizardSteps>

</asp:CreateUserWizard>

Zdarzenia:
• CreatingUser
• CreatedUser

background image

7

Kontrolka ChangePassword

<asp:ChangePassword ID="ChangePassword1" runat="server">
</asp:ChangePassword>

Kontrolka PasswordRecovery

<asp:PasswordRecovery ID="PasswordRecovery1" runat="server">

<MailDefinition Subject="Nowe hasło">
</MailDefinition>

</asp:PasswordRecovery>

<system.net>

<mailSettings>

<smtp deliveryMethod="Network" from="admin@polsl.pl">

<network defaultCredentials="true" host="poczta.polsl.pl" port="25" userName="admin" password="adminXYZ"/>

</smtp>

</mailSettings>

</system.net>

web.config

background image

8

Kontrolka LoginStatus

<asp:LoginStatus ID="LoginStatus1" runat="server" />

<asp:LoginView ID="LoginView1" runat="server">

<LoggedInTemplate>

Witaj w &quot;klubie&quot;.

</LoggedInTemplate>
<AnonymousTemplate>

Jesteś anonimowy użytkownkiem.

</AnonymousTemplate>

</asp:LoginView>

Kontrolka LoginView

background image

9

Struktura danych dla użytkowników

Kontrolka LoginName

<asp:LoginName ID="LoginName1" runat="server" />

Adam

background image

10

Klasa Membership

Składnica

danych

Membership

Provider

Klasa

Membership

Metody:
• CreateUser
• DeleteUser
• FindUserByEmail
• FindUserByName
• GetUser
• GetAllUsers
• GetNumberOfUsersOnline
• UpdateUser
• ValidateUser

Klasa Membership - przykład

<%@ Page Language="C#" %>

<script runat="server">

protected void btnSpis_Click(object sender, EventArgs e)
{

foreach (MembershipUser mu in Membership.GetAllUsers())

lstUzytkownicy.Items.Add(mu.UserName);

}

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

<title></title>

</head>
<body>

<form id="form1" runat="server">
<div>

<asp:ListBox ID="lstUzytkownicy" runat="server"></asp:ListBox> <br />
<asp:Button ID="btnSpis" runat="server" onclick="btnSpis_Click" Text="Spis" />

</div>

</form>

</body>
</html>

Klasa MembershipUser
Właściwości:
• UserName
• Email
• CreationDate
• IsOnline

background image

11

Role

Role są odpowiednikiem grup
użytkowników

Autoryzacje można nadawać całym
rolom

ASP.NET nie udostępnia kontrolek do
zarządzania rolami

Konfiguracja ról

<system.web>

<authentication mode="Forms">

<forms loginUrl="~/Logowanie.aspx" />

</authentication>
<authorization>

<deny users="?"/>

</authorization>

</system.web>

<system.web>

<authorization>

<allow roles="Administratorzy"/>
<deny users="*"/>

</authorization>

</system.web>

<connectionStrings>
<add

name="LocalSqlServer”

connectionString="data source=.\SQLEXPRESS;

Integrated Security=SSPI;

AttachDBFilename=|DataDirectory|aspnetdb.mdf;

User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config

<roleManager>
<providers>
<add name="AspNetSqlRoleProvider"

connectionStringName="LocalSqlServer"

applicationName="/"

type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add name="AspNetWindowsTokenRoleProvider" applicationName="/"
type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</roleManager>

background image

12

ASP.NET Configuration - Role

Struktura danych dla ról

background image

13

Klasa Roles

Składnica

danych

Role

Provider

Klasa
Roles

Metody:
• CreateRole
• DeleteRole
• AddUserToRole
• RemoveUserToRole
• GetRolesForUser
• GetUsersInRole
•IsUserInRole

Klasa Roles - przykład

<%@ Page Language="C#" %>

<script runat="server">

protected void btnDodaj_Click(object sender, EventArgs e)
{

if (Membership.GetUser(txtUzytkownik.Text)!=null && !Roles.IsUserInRole(txtUzytkownik.Text,"Administratorzy"))
Roles.AddUserToRole(txtUzytkownik.Text, "Administratorzy");

}

protected void btnUsun_Click(object sender, EventArgs e)
{

if (Membership.GetUser(txtUzytkownik.Text) != null && Roles.IsUserInRole(txtUzytkownik.Text))

Roles.RemoveUserFromRole(txtUzytkownik.Text, "Administratorzy");

}

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

<title></title>

</head>
<body>

<form id="form1" runat="server">
<div>

<asp:TextBox ID="txtUzytkownik" runat="server"></asp:TextBox>
<asp:Button ID="btnDodaj" runat="server" onclick="btnDodaj_Click" Text="Dodaj" />

&nbsp;<asp:Button ID="btnUsun" runat="server" Text="Usuń" onclick="btnUsun_Click" />

</div>
</form>

</body>
</html>

background image

14

Zmienne profilu użytkownika

Każdy rozpoznany użytkownik może posiadać
swój zestaw zmiennych profilu

Nazwy i typy tych zmiennych należy
zdefiniować w pliku web.config

Zmienne profilowe są dostępne z klasy Profile

Zmienne są przechowywane w bazie danych

Użytkownicy anonimowi mogą mieć
przypisane chwilowe wartości zmiennych
profilowych

Zmienne profilu użytkownika

<system.web>

<profile>

<properties>

<group name="daneOsobowe">

<add name="imie" type="System.String" allowAnonymous="false"/>
<add name="nazwisko" type="System.String" allowAnonymous="false"/>

</group>
<add name="kolor" type="System.Drawing.Color" allowAnonymous="true"/>

</properties>

</profile>

</system.web>

web.config

Profile.daneOsobowe.imie = txtImie.Text;
Profile.daneOsobowe.nazwisko = txtNazwisko.Text;
lblWynik.BackColor = Profile.kolor;

background image

15

Struktura danych dla zmiennych profilowych


Wyszukiwarka

Podobne podstrony:
Wykład 10 12
Prawo konkurencji wykład 7 - 04.12, WPiA UŁ, Prawo ochrony konkurencji i konsumentów (T. Ławicki)
Wykład 01 12
Wyklad 3 11 12
10 Wykład (15 12 2010)
Wykłady PAU Wykłąd PAU 7 12 11
Wykłady Marszałkiewicz 12
FM wykłady FM 1 12 2011
Wykład 2# 02 12
chemia analityczna wyklad 11 i 12
9 wyklad 07 12 2010
biologia wyklad 10.12, biologia
wykład (9) 11c i 12, Niezbędnik leśnika, WYDZIAŁ LEŚNY, Urządzanie, Wykłady, pojedyncze
Wykład 2011-12-20, psychologia drugi rok, psychologia ról
Wyklad 3 makro 12.11, Finanse i Rachunkowość, Semestr I, Makroekonomia, inne
WYKŁAD 11-12, psychologia
wykład 3" 02 12

więcej podobnych podstron