Et site med kursusmaterialer, der bruges i forbindelse med undervisning i forskellige it relaterede emnerEn skøn grafik du kan nyde mens der undervises.
   

Send spørgsmål eller kommentar til Thor - klik her: Send en kommentar til Thor - omkring undervisning eller kursus  Søg i kursusmaterialerne. Kan bruges i forbindelse med undervisningen eller efter kurset  Til forsiden af kursusmaterialer.dk 

 

ASP.NET II / Sikkerhed / Brug af forms modellen


ASP.NET fjernundervisningskursus

- Vil du gerne på kursus NU?

- Vil du gerne lære i dit eget tempo?

- Har du ikke tid til at tage på kursus ude i byen?

Så køb et kursus i ASP.NET som fjernundervisning på www.it-fjernundervisning.dk


Forms modellen

For at bruge forms sikkerhedsmodellen skal vi have etableret 3 elemeter

  1. En web.config fil, der kan ligge i roden på web-sitet
  2. En web.config fil, der kan ligge i den mappe, der skal sættes restriktioner på
  3. En login side, hvor brugeren kan indtaste sit brugernavn og kodeord

 

Visual Studio .NET

I VS.NET må man etablere hvert af disse elementer i hånden. I roden på web-sitet skal vi have en web.config fil, der beskriver hvordan autentificeringen skal køre - den del af filen kan se sådan her ud (ligger under system.web):

Web.Config 1

<authentication mode="Forms">
  <forms name="ASPXAUTH"
        path="/"
        loginUrl="admin/login/login.aspx"
        timeout="999999" />
</authentication>

Og i den/de mapper man vil have begrænsning placerer man en web.config fil, der kan have et indhold som følger:

Web.config 2

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<system.web>
    <authorization>
      <deny users="?" />

    </authorization>
</system.web>
</configuration>

Login.aspx

Endelig skal der skrives en login fil, der kan styre selve login processen. Den skal naturligvis placeres korrekt i forhold til informationerne i web.config filen. Login.aspx filen skal indeholde to tekstbokse til brugernavn og kodeord og en knap. Login delen i codebehind filen kan se sådan her ud:

VB.NET

 Imports System.Web.Security
    Sub LoginBtn_Click(Sender As Object, E As EventArgs)

        If Page.IsValid Then
            If ((UserName.Text = "peter") And (UserPass.Text = "password")) Then
                FormsAuthentication.RedirectFromLoginPage(UserName.Text, false)
            Else
                Msg.Text = "Du har fået tastet forkert brugernavn eller password"
            End If
        End If   
    End Sub

C#

 Using System.Web.Security;
  private void btnLogin_Click(object sender, System.EventArgs e)
  {
   if (IsValid)
   {
    if ((UserName.Text == "peter") && (UserPass.Text == "password"))
    {
     FormsAuthentication.RedirectFromLoginPage(UserName.Text, false);
    }
    else
    {
     Msg.Text = "Du har fået tastet forkert brugernavn eller password";
    }
   }
  }

Husk desuden, at du har metoden

FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text, "SHA1")

der er stilles til rådighed af FormsAuthentication objektet. Den kan bruges til at kryptere passwords så man uden problemer kan skrive dem i sin database eller i et xml dokument.

 

WebMatrix

I Web matrix får vi fin hjælp til at etablere sikkerhed baseret på forms

Som det fremgår kan vi oprette

  • en web.config fil, der skal ligge i den mappe, som sikkerheden skal dække
  • en log ind og
  • en log ud fil

web.config filen

Man skal tilpasse web.config filen to steder. I roden på web-sitet skal man have en web.config fil, med et indhold omkring autentifikation der ser ca. sådan her ud:

<authentication mode="Forms">
  <forms name="ASPXAUTH"
        path="/"
        loginUrl="/admin/login/login.aspx"
        timeout="999999" />
</authentication>

Den fortæller dels hvilken autentifikation man vil bruge og hvor login filen ligger.

I de mapper, der skal have begrænsing skal man også have en web.config fil liggende - den kan se sådan her ud:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<system.web>
    <authorization>
      <deny users="?" />

    </authorization>
</system.web>
</configuration>

Den afviser alle ikke autentificerede brugere.

Man kan også lave én der ser sådan her ud:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <system.web>
    <authorization>
      <deny users="?" />
      <deny users="peter, jens" />
    </authorization>
  </system.web>
</configuration>

Den afviser alle ikke autentificerede brugere OG jens og peter.

 

Login.aspx

Ud over det skal vi have en login.aspx - den skal have to tekstbokse, hvor brugeren kan skrive sit brugernavn og password og en knap. Koden til knappen kan se sådan her ud:

 

    Sub LoginBtn_Click(Sender As Object, E As EventArgs)
   
        If Page.IsValid Then
            If ((UserName.Text = "peter") And (UserPass.Text = "password")) Then
                FormsAuthentication.RedirectFromLoginPage(UserName.Text, false)
            Else
                Msg.Text = "Du har fået tastet forkert brugernavn eller password"
            End If
        End If
   
    End Sub

Den bør naturligvis tilpasses så den trækker sine informationer fra en database eller et xml dokument. Husk at sætte den sidste parameter til false i FormsAuten... - ellers bliver der lavet en persistent cookie på brugerens maskine, hvilket betyder at han så altid vil kunne komme ind på sitet.

Husk desuden, at du har metoden

FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text, "SHA1")

der er stilles til rådighed af FormsAuthentication objektet. Den kan bruges til at kryptere passwords så man uden problemer kan skrive dem i sin database eller i et xml dokument.

 

Rollebaseret sikkerhed

Læs om hvordan man kan implementere rollebaseret sikkerhed her:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/f_and_m/html/vxconrolebasedsecurity.asp?frame=true

Dette er også en god reference på det område:

http://www.codeproject.com/aspnet/formsroleauth.asp

 


Opgave

  • Lav en mappe til et administrationsmodul og sørg for, at man skal logge ind for at komme til at se sider i mappen
  • Tjek at det virker efter hensigten
  • Lav en login.aspx, der validerer brugerne mod indholdet i en XML liste over brugere og deres password
   
Spacer Spacer Spacer Spacer