Frage

Ich möchte eine Website in ASP Classic entwickeln, die die HTTP -Authentifizierung gegen eine Datenbank- oder Kennwortliste verwendet, die unter der Steuerung des Skripts steht. Im Idealfall sollte die Lösung keine Komponenten oder IIS -Einstellungen beinhalten, da das Skript in einer gehosteten Umgebung ausgeführt werden sollte.

Alle Hinweise/Code zutiefst geschätzt.

War es hilfreich?

Lösung

Es ist möglich, die HTTP -Basisauthentifizierung in reinem klassischem ASP VBScript durchzuführen.

Sie benötigen etwas, um die Basis 64 zu dekodieren. Hier ist eine reine VBScript -Implementierung. Sie müssen auch sicherstellen, dass Sie in Ihrer IIS -Konfiguration die "grundlegende Authentifizierung" und "integrierte Windows -Authentifizierung" deaktivieren, da diese das, was Sie wieder in den Header http_authorisierungsbezogener haben, beeinträchtigen.

Hier finden Sie eine Beispielimplementierung, die nur den Benutzernamen und das Kennwort wiederholt.

<%@LANGUAGE="VBSCRIPT"%>

<!--#include file="decbase64.asp" -->

<%
Sub Unauth()
    Call Response.AddHeader("WWW-Authenticate", "Basic realm=""SomethingGoesHere""")
    Response.Status = "401 Unauthorized"
    Call Response.End()
End Sub

Dim strAuth
strAuth = Request.ServerVariables("HTTP_AUTHORIZATION")

If IsNull(strAuth) Or IsEmpty(strAuth) Or strAuth = "" Then
    Call Unauth
Else 
    %>
    <html>
    <body>
    <% 
        Dim aParts, aCredentials, strType, strBase64, strPlain, strUser, strPassword
        aParts = Split(strAuth, " ")
        If aParts(0) <> "Basic" Then
            Call Unauth
        End If
        strPlain = Base64Decode(aParts(1))
        aCredentials = Split(strPlain, ":")
    %>
    <%= Server.HTMLEncode(aCredentials(0) & " - " & aCredentials(1)) %>
    </body>
    </html>
    <%
End If
%>

Das Haken des Benutzernamens und des Passworts an etwas Sinnvolles wird als Übung für den Leser gelassen.

Andere Tipps

Per Definition ist die HTTP -Authentifizierung etwas, das vom Webserver angefordert wird. Ich bezweifle, dass Sie eine Lösung finden, die nicht dazu führt, dass keine IIS -Einstellungen angewendet werden.

Der Webbrowser stellt eine Verbindung zu Ihrer Website her. Sofern Ihr Server nicht mit einem HTTP -Antwortcode http/1.1 401 nicht autorisiert wird, wird der Durchsuchen die Anmeldeinformationen nicht durchlaufen.

Sie könnten versuchen, einen Antwortcode von 401 zu erzwingen und den Header einzustellen

   WWW-Authenticate: Basic realm="SomethingGoesHere"

Anschließend fordert der Browser den Benutzer für Benutzername und Kennwort auf, wird jedoch über den Clear-Text an den Browser (Base64 Coded) wie folgt gesendet:

Authorization: Basic YnJpYW5iOmJvYmJ5Ym95

Die von Base64 zu:

brianb:bobbyboy

Ich weiß nicht, ob Sie von Ihrer ASP -Seite Zugriff auf den Autorisierungsheader haben oder ob der Webserver ausflippen wird Versuchen...

Hallo, versuchen Sie, eine Liste von Benutzern aus einer Datenbank zu erhalten oder netzwerkbasierte Berechtigungen auf dem HTTP -Server zu verwenden?

Wenn Sie eine Datenbank verwenden, verwenden Sie ODBC und DSN

Dim DatabaseObject1
Set DatabaseObject1 = Server.CreateObject("ADODB.Connection")
DatabaseObject1.Open("DSN=DSNname;")

Wenn Sie ein Kennwortdialogfeld (vom Server) wünschen, müssen Sie die IIS -Einstellungen für eine gute Anleitung dazu ändern.

http://www.authenticationTutorial.com/tutorial/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top