2008-10-16 57 views

回答

9

可以在純經典ASP VBScript中執行HTTP基本身份驗證。

您將需要一些東西來解碼基地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驗證是通過服務器請求的東西,我懷疑你會發現,不會導致任何IIS設置被應用的解決方案。

網絡瀏覽器將連接到您的網站,除非您的服務器使用HTTP響應代碼HTTP/1.1 401未經授權進行響應,否則瀏覽將不會通過憑證。

你可以嘗試,並迫使401響應代碼,並設置頭

WWW-Authenticate: Basic realm="SomethingGoesHere" 

然後,瀏覽器會提示輸入用戶名和密碼的用戶,但會在明文發送到瀏覽器的(Base64編碼),如下所示:

Authorization: Basic YnJpYW5iOmJvYmJ5Ym95 

其從Base64的轉換爲:

brianb:bobbyboy 

我不知道您是否可以訪問您的ASP頁面的授權標頭,或者如果Web服務器會因爲有人試圖向其傳遞憑據而不願意時向其發送令人驚訝的信息,但可能值得一個嘗試...

+0

用戶和密碼應在base64編碼之前進行散列處理,除非您希望有人嗅探流量以base64解碼您的憑證。 – booyaa 2013-08-29 11:54:15