جعل http: // بعد من أوراق اعتماد المستخدم باستخدام الخادم - الأمن المتكاملة

StackOverflow https://stackoverflow.com/questions/1046513

سؤال

وأنا أحاول أن جعل وظيفة، من إحدى صفحات آسيا والمحيط الهادئ الكلاسيكي جانب الخادم، وذلك باستخدام بيانات اعتماد المستخدم ...

وأنا باستخدام msxml2.ServerXMLHTTP لجعل برمجيا منصب

ولقد حاولت مع العديد من تكوينات في موقع IIS 5.1، ولكن ليس هناك طريقة يمكنني جعل تشغيل IIS مع حساب المحدد ...

ولقد تقدمت الصفحة آسيا والمحيط الهادئ الصغيرة التي تدير whoami للتحقق من ما حساب عملية IIS ط باستخدام ...

ومع IIS 5.1، وذلك باستخدام الأمان المتكامل عملية يستخدم:

وmy_machine \ IWAM_my_machine

وأنا تعطيل الأمان المتكامل، وترك الحساب المجال مثل الوصول المجهول، وأحصل على نفس (¿؟)

ولاختبار المستخدم أفعل ما يلي


private function whoami()
dim shell, cmd

    set shell = createObject("wscript.shell") 
    set cmd = shell.exec( server.mapPath( "whoami.exe" ) )
    whoami = cmd.stdOut.readAll() 
    set shell = nothing: set cmd = nothing 

end function

وغير ذلك لأنني إصدار أمر قذيفة؟

وأود أن إجراء مكالمات http: // بعد، إلى موقع آخر يعمل مع الأمان المتكامل ...

لذلك أنا بحاجة إلى طريقة لتمرير أوراق الاعتماد، أو على الأقل لتشغيل مع حساب المحدد، ومن ثم تكوين موقع بعيد إلى فحوى ذلك الحساب ...

واعتقدت أن مجرد وضع الموقع للعمل مع الأمان المتكامل سيكون كافيا ...

وكيف يمكنني تحقيق شيء من هذا القبيل؟

ملاحظة: مع IIS6، يحدث نفسه ولكن إذا قمت بتغيير canfiguration تجمع أحصل على المعلومات التالية من whoami

وNT AUTHORITY \ NETWORK الخدمة

وNT AUTHORITY \ LOCAL الخدمة

وNT السلطة \ SYSTEM

وإذا أنا وضعت حساب مجال، وأحصل على رسالة "الخدمة غير متوفرة" ...

وتحرير: وجدت هذا

<وأ href = "http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/275269ee-1b9f-4869-8d72-c9006b5bd659.mspx؟mfr=true" يختلط = "نوفولو noreferrer" > http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/275269ee-1b9f-4869-8d72-c9006b5bd659.mspx؟mfr=true

وتقول ما سوبوسيد، "إذا كان مستخدم تمت مصادقته يجعل الطلب، ويستند الرمز المميز موضوع على حساب مصادقة المستخدم"، ولكن ما أنا لا يبدو للعمل من هذا القبيل ... ما يمكنني أن يكون في عداد المفقودين؟

وتحرير:

وكذلك الشيء whoami ومن الواضح أن يخدع لي، حاولت مع الدالة التالية


private function whoami_db( serverName, dbName )
dim conn, data

set conn = server.createObject("adodb.connection")
conn.open       "Provider=SQLOLEDB.1;Integrated Security=SSPI;" & _
                        "Initial Catalog=" & dbName & ";Data Source=" & serverName
set data = conn.execute( "select suser_sname() as user_name" )

whoami_db = data("user_name")

data.close: conn.close
set data = nothing: set conn = nothing

end function

وبدا كل شيء أن تعمل بشكل جيد ...

ولكن كيف يمكنني جعل العمل msxml2.ServerXMLHTTP مع أوراق اعتماد المستخدم ؟؟؟

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

المحلول

وأنت whoami.exe الصحيح مربكة لك. إطلاق عملية منفصلة تسبب في عملية جديدة لتشغيل كمستخدم العملية الحالية. على XP التي من شأنها أن تكون المضيف تطبيق COM + (DLLHOST)، وسوف تعمل بشكل طبيعي كما IWAM_<machine>. على IIS6 أنه سيكون سير العمل w3wp.exe وعادة ما يعمل على خدمة Authority \ Network NT.

ولكن في موضوع معالجة طلب HTTP وانتحال صفة رمز الأمان مختلفة. مع الأمان المتكامل كما كنت قد اكتشفت هذا من شأنه أن رمز الأمان للمستخدم جعل الطلب، والتجربة SSPI الخاص بك يحمل بها. مع الوصول المجهول يستخدم المستخدم المجهول تكوينها على الموقع / التطبيق، هذا هو عادة <MACHINE>\IUSR_<machine>.

وأما بالنسبة لمشكلة معينة مع ServerXMLHttp لهذا يعود إلى يستخدم WinHttp المكون الأساسي. وهذا افتراضيا فقط إرسال أوراق اعتماد المستخدمين الحالية إذا كان خادم يتم الوصول لائحة تجاوز الوكيل. حتى ذلك الحين من الممكن لServerXMLHttp لتكوين للم ترسل أوراق اعتماد المستخدم، أنا لم يختبر هذا السيناريو نفسي.

وأسف يوفر ServerXMLHttp لوصول محدود جدا إلى تفاصيل التكوين على يستخدم WinHttp. ولكن إذا كان هذا هو اظهار سدادة ثم هل يمكن دائما استخدام عنصر يستخدم WinHttp مباشرة نفسك: -

Dim oWinHTTP
Dim oDOM

    Const AutoLogonPolicy_Always = 0

Set oWinHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")

oWinHTTP.SetAutoLogonPolicy AutoLogonPolicy_Always

oWinHTTP.Open "GET", "http://remoteserver.org/getsomexml.xxx", False
oWinHTTP.Send

If oWinHTTP.Status = 200 Then
    Set oDOM = CreateObject("MSXML2.DOMDocument.3.0")
    oDOM.async = false
    oDOM.Load oWinHTTP.ResponseStream     
End If

Set oWinHTTP = Nothing

وينبغي أن تعمل من أجل المتشعب، لHTTPS يحصل فوضى حقيقية.

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