سؤال

أرغب في تطوير موقع ويب في ASP Classic يستخدم مصادقة HTTP مقابل قاعدة بيانات أو قائمة كلمات المرور تحت عنصر تحكم البرنامج النصي. من الناحية المثالية ، يجب ألا يتضمن الحل أي مكونات أو إعدادات IIS حيث يجب تشغيل البرنامج النصي في بيئة مستضافة.

أي أدلة/رمز موضع تقدير عميق.

هل كانت مفيدة؟

المحلول

من الممكن القيام بمصادقة HTTP الأساسية في ASP VBScript Pure Classic.

ستحتاج إلى شيء لفك تشفير قاعدة 64. هنا تنفيذ VBScript خالص. ستحتاج أيضًا إلى التأكد من أنه في تكوين 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
%>

يترك تثبيت اسم المستخدم وكلمة المرور لشيء ذي معنى كتمرين للقارئ.

نصائح أخرى

بحكم التعريف ، فإن مصادقة HTTP هي شيء يطلبه خادم الويب ، وأشك في أنك ستجد حلًا لا يؤدي إلى تطبيق أي إعدادات IIS.

سيتصل متصفح الويب بموقع الويب الخاص بك ، وما لم يستجيب الخادم الخاص بك برمز استجابة HTTP HTTP/1.1 401 غير مصرح به ، فلن يمر Browse عبر بيانات الاعتماد.

يمكنك محاولة فرض رمز استجابة من 401 وتعيين الرأس

   WWW-Authenticate: Basic realm="SomethingGoesHere"

بعد ذلك ، سيطالب المستعرض المستخدم باسم المستخدم وكلمة المرور ، ولكن سيتم إرساله عبر نص واضح إلى المتصفح (Base64 المشفر) ، مثل هذا:

Authorization: Basic YnJpYW5iOmJvYmJ5Ym95

التي تترجم من base64 إلى:

brianb:bobbyboy

لا أعرف ما إذا كان سيكون لديك إمكانية الوصول إلى رأس التفويض من صفحة ASP الخاصة بك ، أو إذا كان خادم الويب سيخاف لأن شخصًا ما يحاول تمرير بيانات الاعتماد إليها عندما لا يتوقع ذلك ، ولكن يمكن أن يستحق محاولة...

مرحبًا ، هل تحاول الحصول على قائمة من المستخدمين من قاعدة بيانات أو استخدام أذونات تعتمد على الشبكة على خادم HTTP؟

إذا كنت تستخدم قاعدة بيانات استخدم ODBC و DSN

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

إذا كنت ترغب في مربع حوار كلمة المرور (من الخادم) ، فستحتاج إلى تغيير إعدادات IIS للحصول على دليل جيد لهذا ..

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top