2013-08-05 4 views
5

Ich versuche zu verstehen, wie Windows-Authentifizierung funktioniert und wie man es implementiert. Ich habe schon ein paar Artikel gelesen und einige ziemlich lange Videos auf youtube angeschaut, aber ich kann immer noch nicht sagen, was ich meiner web.config file/index.aspx Seite hinzufügen muss, damit es richtig funktioniert. HierVerwenden von Windows-Authentifizierung in asp.net mit C#

ist die index.aspx Seite:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Data; 

namespace asset_management_system 
{ 
    public partial class index1 : System.Web.UI.Page 
    { 

    DataAccessLayer dal = new DataAccessLayer(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void loginBut_Click(object sender, EventArgs e) 
    { 

     string username = usernameTB.Text.Trim(); 
     string password = passwordTB.Text.Trim(); 

     try 
     { 
      using (SqlDataReader dr = dal.CheckLoginDetails(username)) 
      { 
       //if username does not exist 
       if (!dr.Read()) 
       { 
        MessageBox.Show("Invalid login details"); 
       } 

       else 
       { 
        //if password matches the username then redirect to home page 
        if (dr[0].ToString() == password) 
        { 
         Session["username"] = username; 
         Response.Redirect("Home/home.aspx"); 
        } 
        else 
        { 
         MessageBox.Show("Invalid login details"); 
        } 
       } 
      } 
     } 
     catch (SqlException sqlex) { MessageBox.Show("There may be an issue with the server, please contact the administrator" + 
                " and provide this error message: " + sqlex); } 
     catch (Exception ex) { MessageBox.Show("error message: " + ex); } 


    }//end of loginBut_click method 


    }//end of class 
}//end of namespace 

Und hier ist die Datei web.config

<?xml version="1.0"?> 

<configuration> 

    <connectionStrings> 
    <add name="Asset management System DBConnectionString" connectionString="Data Source=STEPHENP\SQLEXPRESS;Initial Catalog=&quot;Asset management System DB&quot;;Integrated Security=True" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

    <system.web> 

    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> 
     <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     </assemblies> 
    </compilation> 

    <authentication mode="Windows"> 
    </authentication> 
    <identity impersonate="true"/> 

    </system.web> 

</configuration> 
+0

Sie müssen Standorte mit den 'authorization' Elementen sperren. –

+0

Sie überprüfen eine Datenbank auf einen Benutzernamen und ein Passwort, was eher einer formularbasierten Authentifizierung entspricht. Der Zweck der Windows-Authentifizierung besteht darin, das nicht zu haben, oder wenn Sie möchten, dass die Windows-Authentifizierung blockiert, wer auf die Anmeldeseite zugreifen kann. Sie haben das Authentifizierungselement korrekt in web.config platziert, aber das Autorisierungselement fehlt. Siehe diese Seite für und Verständnis. http://msdn.microsoft.com/en-us/library/8d82143t(v=vs.85).aspx – Bearcat9425

+2

Danke Jungs, ich habe diese Zeile in die Datei web.config hinzugefügt Gibt es zusätzlichen Code, den ich meiner index.aspx-Seite hinzufügen sollte? –

Antwort

6

Sie sind verwirrend SQL-Authentifizierung mit Windows-Authentifizierung.

für diese Web-Seite Um auf die Windows-Authentifizierung, web.config muss

<authentication mode="Windows"> 

Wenn Sie implementieren Ihre Seite zu einem Web-Server auf Basis zu arbeiten, müssen Sie die anonyme Authentifizierung deaktivieren, um externe Benutzer zu beschränken. Unten ist ein Ausschnitt aus einem Authentifizierungsbereich von IIS7 + Webserver:

enter image description here

enter image description here

Wenn Sie gegen Benutzer oder seine Gruppe angemeldet programmieren müssen, müssen Sie die WindowsIdentity Klasse verwenden.

+1

Ich sehe, es ist das erste Mal, dass ich auf Sicherheitsprobleme gestoßen bin, also versuche ich es richtig zu machen und trotzdem verwirrt zu werden, danke –