2008-10-16 1 views
8

Я хочу создать веб-сайт в ASP classic, который использует HTTP-аутентификацию в отношении списка базы данных или пароля, который находится под контролем скрипта. В идеале решение не должно включать никаких компонентов или параметров IIS, поскольку сценарий должен быть запущен в размещенной среде.HTTP Authentication (Basic или Digest) в ASP Classic через IIS

Любые подсказки/код глубоко оценены.

ответ

9

Можно выполнить базовую аутентификацию HTTP в чистом классическом ASP VBScript.

Вам понадобится что-то для декодирования базы 64. Here is a pure VBScript implementation. Вам также необходимо убедиться, что в конфигурации IIS вы отключите «Обычную проверку подлинности» и «Интегрированную проверку подлинности Windows», поскольку это будет мешать тому, что вы вернетесь в заголовок HTTP_AUTHORIZATION.

Вот пример реализации, который просто повторяет имя пользователя и пароль.

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

Приобретение имени пользователя и пароля до чего-то значимого остается в качестве упражнения для читателя.

0

Привет, вы пытаетесь получить список пользователей из базы данных или использовать сетевые разрешения на HTTP-сервере?

Если вы используете использование базы данных ODBC и DSN

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

Если Вы желаете диалоговое окно пароля (с сервера), вам нужно будет изменить настройки IIS для хорошего руководства для этого ..

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

3

по определению, HTTP-аутентификации является то, что запрашивается WebServer, я сомневаюсь, что вы найдете решение, которое не приводит каких-либо настроек IIS применяется.

Веб-браузер подключится к вашему веб-сайту, и если ваш сервер не ответит на HTTP-код ответа HTTP/1.1 401 Unauthorized, просмотр не будет проходить через учетные данные.

Вы можете попытаться заставить код ответа 401 и установить заголовок

WWW-Authenticate: Basic realm="SomethingGoesHere" 

Затем браузер запрашивает у пользователя имя пользователя и пароль, но будет передаваться по открытым текстом в браузере (base64 закодирован), например:

Authorization: Basic YnJpYW5iOmJvYmJ5Ym95 

Что переводится с Base64 к:

brianb:bobbyboy 

Я не знаю, будет ли у вас доступ к заголовку авторизации со страницы ASP, или если веб-сервер будет волноваться, потому что кто-то пытается передать ему учетные данные, когда он его не ожидает, но может стоить a ...

+0

Пользователь и пароль должны быть хэшированы до кодировки base64, если только вы не хотите, чтобы кто-то нюхал трафик на base64, расшифруйте ваши учетные данные. – booyaa 2013-08-29 11:54:15

 Смежные вопросы

  • Нет связанных вопросов^_^