جعل http: // بعد من أوراق اعتماد المستخدم باستخدام الخادم - الأمن المتكاملة
-
20-08-2019 - |
سؤال
وأنا أحاول أن جعل وظيفة، من إحدى صفحات آسيا والمحيط الهادئ الكلاسيكي جانب الخادم، وذلك باستخدام بيانات اعتماد المستخدم ...
وأنا باستخدام 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 يحصل فوضى حقيقية.