2008-10-16 26 views
8

Deseo desarrollar un sitio web en ASP clásico que utilice Autenticación HTTP en una base de datos o lista de contraseñas bajo el control del script. Idealmente, la solución no debería incluir componentes o configuraciones de IIS, ya que la secuencia de comandos debería poder ejecutarse en un entorno alojado.Autenticación HTTP (Básica o Resumen) en ASP Classic a través de IIS

Cualquier pista/código apreciado profundamente.

Respuesta

9

Es posible hacer Autenticación HTTP básica en ASP VBScript clásico puro.

Necesitará algo para decodificar la base 64. Here is a pure VBScript implementation. También deberá asegurarse de que en su configuración IIS desactive "Autenticación básica" y "Autenticación integrada de Windows", ya que interferirán con lo que recibe en el encabezado HTTP_AUTHORIZATION.

Aquí hay una implementación de ejemplo que simplemente hace eco del nombre de usuario y la contraseña.

<%@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 
%> 

Enganchar el nombre de usuario y la contraseña hasta algo significativo se deja como un ejercicio para el lector.

0

¿Estás intentando obtener una lista de usuarios de una base de datos o usar permisos basados ​​en la red en el servidor HTTP?

Si está utilizando una base de datos ODBC de uso y DSN

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

Si estás interesado en un cuadro de diálogo de contraseña (desde el servidor), tendrá que modificar la configuración de IIS para una buena guía para este ..

http://www.authenticationtutorial.com/tutorial/

3

por definición, la autenticación HTTP es algo que se solicita por el servidor web, no creo que va a encontrar una solución que no da lugar a ninguna configuración de IIS que se aplica.

El navegador web se conectará a su sitio web y, a menos que su servidor responda con un código HTTP de respuesta HTTP/1.1 401 no autorizado, el navegador no pasará las credenciales.

Se podría tratar de forzar un código de respuesta 401 y establecer el encabezado

WWW-Authenticate: Basic realm="SomethingGoesHere" 

A continuación, el navegador le pedirá al usuario el nombre de usuario y contraseña, pero se enviarán mediante texto claro al navegador (base 64 codificada), así:

Authorization: Basic YnJpYW5iOmJvYmJ5Ym95 

que se traduce de base 64 a:

brianb:bobbyboy 

No sé si tendrá acceso al encabezado Autorización desde su página ASP, o si el Servidor Web se va a enloquecer porque alguien está tratando de pasarle credenciales cuando no lo espera, pero podría valer la pena intente ...

+0

El usuario y la contraseña deben tener un hash antes de la codificación de base64, a menos que desee que alguien detecte el tráfico en base64 para decodificar sus credenciales. – booyaa

Cuestiones relacionadas