IT-Academy Logo
Sign Up Login Help
Home - Programmieren - .Net - ASP.Net - Sicheres Login mit ASP.Net



Sicheres Login mit ASP.Net

Sicheres Login mit ASP.Net


Autor: x y (kuertu)
Datum: 07-07-2007, 19:23:07
Referenzen: -
Schwierigkeit: Fortgeschrittene
Ansichten: 16297x
Rating: Bisher keine Bewertung.

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Für das Sichere Login mit Datenbankeinbindung verwenden wird Microsoft Visual Studio 2005.

Zuerst muss eine neue Website erstellt werden und zwar unter "Datei/Neue Website".




Danach muss man von der Toolbox aus der Gruppe "Anmelden" ein "Login"-Fenster zur Website hinzufügen.




In den Login-Aufgaben kann man unter "Autom. Formatierung…" diverse Formatierungsschemen für das Login-Fenster auswählen. Wenn man mit der Formatierung des Login-Fensters zufrieden ist, kann man die Konfiguration der Website unter "Website verwalten" öffnen.




Danach kann man unter "Sicherheit/Datenspeicher auswählen/Einzelnen Anbieter für alle Siteverwaltungsdaten auswählen/test" testen ob die Website bereits funktioniert, doch dies ist jetzt noch nicht der Fall, da die Datenbank noch nicht erstellt und konfiguriert wurde.




Nun muss man im SQL Server Management Studio die neue Datenbank "dbWebSecurity" erstellen. Diese Datenbank muss anschliessend noch konfiguriert werden, dies geschieht mit dem ausführen der aspnet_regsql.exe (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe).

Hinweis: Fenster die bei der Installation erscheinen und hier nicht beschrieben werden, enthalten keine wichtigen Einstellungen und können mit "Weiter" bestätigt werden. Beim Ausführen dieses Assistenten muss man drei Sachen: Der "SQL Server für Anwendungsdienste konfigurieren" muss angewählt werden




Beim Fenster "Server und Datenbank auswählen" muss beim Server "(local)\SQL2005", bei der Authentifizierung "Windows-Authentifizierung" und bei der Datenbank "dbWebSecurity" eingegeben bzw. angewählt werden.




Wenn beim letzten Fenster "Die Datenbank wurde erstellt oder geändert" keine Fehlermeldungen sichtbar sind, hat die Konfiguration der Datenbank geklappt und der Assistent kann durch drücken des Buttons "Fertig stellen" beendet werden.




Die Datenbank funktioniert aber auch jetzt noch nicht korrekt, denn im File machine.config ( C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config) müssen noch ein paar kleine Änderungen vorgenommen werden:

Da wir mit dem SQL Server 2005 Enterprise arbeiten, müssen wir hier unter "data soure” ".\SQL2005" eintragen. Der Abschnitt (jeweils von ";" bis ";") "AttachDBFilename" muss gelöscht und an seiner Stelle der Abschnitt "Initial Catalog=dbWebSecurity" eingefügt werden

Die geänderte Zeile

Nun kann der Test, den wir am Anfang, als die Datenbank noch nicht bestand, bereits einmal ausgeführt hatten, noch einmal durchgeführt werden. Jetzt sollte dieser aber erfolgreich enden.

Jetzt können wir einen ersten Benutzer erstellen (in der Website-Verwaltung) indem wir unter "Sicherheit" den Benutzer-Assistenten starten. Bei der Zugriffsmethode muss "Aus dem Internet" aktiviert werden.




Sobald der Benutzer erstellt ist, kann man die Anmelde-Seite öffnen und das Login testen. Nun wird eine neue Website mit Startseite (start.aspx) und einer zweiten Seite (neu.aspx), die nach einem korrekten Login angezeigt wird, erstellt.

Beim erstellen des Benutzers müssen alle Felder ausgefüllt und ein komplexes Passwort verwendet werden.




Die Seite "neu.aspx" wird in das Unterverzeichnis "site_admin" verschoben, damit nachher Berechtigungen auf den Ordner vergeben werden können Auf die Seite für das korrekte Login (neu.aspx) kann man nun noch einen Text hinzufügen wie z.B. "Dies ist die Administratoren-Seite!". So sieht man ob das Login erfolgreich war. In die Seite start.aspx muss man nun noch ein Login hinzufügen, wie wir es schon bei der default Seite gemacht haben

Login-Seite (start.aspx)




Seite die nach dem korrekten Login angezeigt wird (neu.aspx):




Nun sollte die Übersicht der Website so aussehen:




In Start.aspx.cs muss nun noch folgendes eingefügt werden:

protected void OnLoggedIn(object sender, EventArgs e) { Response.Redirect("~/site_admin/neu.aspx"); }

Danach sieht start.aspx.cs folgendermassen aus:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class start : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void OnLoggedIn(object sender, EventArgs e)
    {
        Response.Redirect("~/site_admin/neu.aspx");
    }
}
Danach muss in Start.aspx noch folgendes eingefügt werden, damit man in die Abfrage in der "start.aspx.cs" Seite gelangt und bei gültigem Login an die Seite "neu.aspx" weitergeleitet wird:

OnLoggedIn="OnLoggedIn"

Danach sieht start.aspx folgendermassen aus:

<% @ Page Language="C#" AutoEventWireup="true" CodeFile="start.aspx.cs" Inherits="start" %6>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title6>Unbenannte Seite</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Login ID="Login1" OnLoggedIn="OnLoggedIn" runat="server" BackColor="#EFF3FB" BorderColor="#B5C7DE" BorderPadding="4"
            BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em"
            ForeColor="#333333">
            <TextBoxStyle Font-Size="0.8em" />
            <LoginButtonStyle BackColor="White" BorderColor="#507CD1" BorderStyle="Solid" BorderWidth="1px"
                Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284E98" />
            <InstructionTextStyle Font-Italic="True" ForeColor="Black" />
            <TitleTextStyle BackColor="#507CD1" Font-Bold="True" Font-Size="0.9em" ForeColor="White" />
        </asp:Login>
         </div>
    </form>
</body>
</html>


Jetzt sollte alles funktionieren.

Man kann nun unter "Website/ASP.NET-Konfiguration" Rollen hinzufügen und Berechtigungen auf die Seiten vergeben. Um eine Rolle zu erstellen muss man unter "Sicherheit" auf "Rollen erstellen oder verwalten" klicken. Danach kann man einen Rollennamen vergeben und die Rolle hinzufügen.




Anschliessen kann man die Rolle verwalten und ihr einen entsprechenden Benutzer (in diesem Fall "admin") zuweisen.




Nun kann man unter "Sicherheit/Zugriffregeln verwalten" definieren, welche Benutzer oder Rollen auf welche Ordner zugriff haben. Der Rolle "Administratoren" lassen wir den Zugriff auf den Ordner "site_admin" zu, der Rolle Alle hingegen verweigern wir den Zugriff auf diesen Ordner.




Um sicher zu gehen, dass andere Benutzer keinen Zugriff haben, erstellen wir den Benutzer "test", welchen wir keiner Rolle zuweisen.

Wenn man sich nun mit dem Benutzer "admin" anmeldet, welcher Zugriff auf die Seite neu.aspx hat, wird die Seite angezeigt.




Wenn man sich jedoch mit dem Benutzer "test" anmeldet, welcher kein Recht hat diese Seite anzuzeigen, erfolg die folgende Meldung:




Im Microsoft SQL Management Studio ist die Datenbank auch sichtbar. Mit dem SQL Server Profiler (im Management Studio unter "Extras/SQL Server Profiler") werden nun alle Vorgänge und Aktionen angezeigt.




Unter "File/New Trace…/Run" können diese Einträge angeschaut werden.




Damit man nun auch vom Netzwerk her auf die Website zugreifen und sich erfolgreich anmelden kann, muss man den Benutzer "AUTORITÄT\NETZWERKDIENST" (im SQL Management Studio 2005) unter "Datenbanken/dbWebSecurity/Sicherheit/Benutzer" erstellen.




Danach muss man ihm mit den folgenden drei Skripten die benötigten Berechtigungen erteilen.

use [dbWebSecurity]
GO
GRANT EXECUTE ON [dbo].[aspnet_UsersInRoles_GetRolesForUser] TO [NT-AUTORITÄT\NETZWERKDIENST]
GO


use [dbWebSecurity]
GO
GRANT EXECUTE ON [dbo].[aspnet_CheckSchemaVersion] TO [NT-AUTORITÄT\NETZWERKDIENST]
GO

use [dbWebSecurity]
GO
GRANT EXECUTE ON [dbo].[aspnet_Membership_GetPasswordWithFormat] TO [NT-AUTORITÄT\NETZWERKDIENST]
GO
Nun muss man den Benutzer "AUTORITÄT\NETZWERKDIENST" auch noch unter "Sicherheit/Anmeldungen" hinzufügen und ihm die Datenbank "dbWebSecurity" als Standarddatenbank zuweisen.




Zum Schluss muss die Website noch (im Visual Studio 2005) unter "Erstellen/Website veröffentlichen" in ein gewünschtes Verzeichnis gespeichert bzw. exportiert werden, damit man diese Dateien dann über eine Website auf dem IIS-Server, deren Startseite auf "start.aspx" gestellt wurde, zugänglich machen kann.
Nun kann man sich, wie nach dem lokalen Debuggen der Website, auch übers Netzwerk erfolgreich anmelden und gelangt zur Seite "neu.aspx".


Goergi
Developer
Beitrag vom:
08-07-2007, 22:54:15

Grafiken

es sind alle Grafiken scharf und lesbar. Ihr müsst nur darauf klicken, um sie in einem neuen Fenster/Tab vergrößert zu öffnen ;-)

-----------------------------------------------------


kuertu
Senior Member
Beitrag vom:
08-07-2007, 14:02:26

Grafiken

Hallo Zusammen

Ich habe diese Doku als .doc-File und als .pdf-File an die it-academy gesendet. In beiden Versionen sind die Grafiken scharf und sehr gut lesbar. Ich nehme also an, dass die Qualität der Bilder heruntergesetzt werden musste, da dieser Artikel relativ viele ScreenShots fasst.

-----------------------------------------------------


paedubucher
Professonial
Beitrag vom:
08-07-2007, 11:24:22

Die Sache mit den Grafiken

Die Grafiken sind meines Wissens immer noch auf 400x400 Pixel beschränkt, trifft das so zu? Mit 600x600 könnte man da schon einiges rausholen...

-----------------------------------------------------


dreamer
Expert
Beitrag vom:
07-07-2007, 17:37:17

Netter Artikel

Ich finde schon gefallen an diesem Artikel, obwohl ich eingefleischter PHP-Fan bin. Allerdings müssen die Graphiken nochmal überarbeitet werden.

-----------------------------------------------------


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06246
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1154
Comments: 0