Web Deploy to IIS 7 พร้อมการพิสูจน์ตัวตนแบบพาส - ทรู


12

หลังจากการทดลองใช้งานและการกำหนดค่าข้อผิดพลาดมากมายฉันสามารถสคริปต์ msdeploy.exe เพื่อปรับใช้แพคเกจที่สร้างขึ้นใน Visual Studio 2010 กับเซิร์ฟเวอร์ระยะไกลที่ใช้ IIS 7.5 ด้วยบรรทัดคำสั่งเช่น:

คำสั่งการรับรองความถูกต้องพื้นฐาน:

msdeploy -source:package="project.zip" -dest:auto,computerName='https://webserver:8172/MsDeploy.axd',authtype='Basic',username='DOMAIN\myuser',password='xxx',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted

ฉันสามารถกำจัดความต้องการที่จะให้รหัสผ่านในบรรทัดคำสั่งโดยการเปิดใช้งานการตรวจสอบผ่านหรือไม่? เอกสารเว็บปรับใช้พูดถึงพารามิเตอร์ AuthTypeที่สามารถระบุ 'NTLM' แทนขั้นพื้นฐาน อย่างไรก็ตามเมื่อใดก็ตามที่ฉันลองนี้ (ดูตัวอย่างด้านล่าง) ฉันได้รับข้อผิดพลาดที่ระบุ 401 บันทึกการใช้เว็บ WMSvc แสดง 401.2 และไม่มีหมายเลขผู้ใช้ในรายการบันทึกนั้นซึ่งแตกต่างจากความพยายามก่อนหน้าโดยใช้การรับรองความถูกต้องเบื้องต้น ในบันทึกการใช้เว็บ ไม่พบข้อมูลที่เป็นประโยชน์อื่น ๆ ในตัวแสดงเหตุการณ์ของไคลเอนต์หรือเซิร์ฟเวอร์

หมายเหตุ: เว็บเซิร์ฟเวอร์เป้าหมายอยู่ในโดเมนอื่นดังนั้นฉันจึงต้องnet use \\webserver /u:DOMAIN\myuserสร้างโทเค็น

ความพยายามในการใช้คำสั่งตรวจสอบสิทธิ์ Pass-through:

msdeploy -source:package="project.zip" -dest:auto,computerName='https://webserver:8172/MsDeploy.axd',authtype='NTLM',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted

ดูเหมือนว่า msdeploy.exe จะตรวจสอบสิทธิ์ IIS อย่างไม่ถูกต้องในระดับ HTTP มีอะไรผิดปกติ?

ไคลเอ็นต์คือ Windows XP, เซิร์ฟเวอร์คือ Win2008R2 ทั้งสองกำลังเรียกใช้ msdeploy.exe รุ่น 7.1.618.0 ทั้งคู่ติดตั้ง. NET 2.0, 3.5 และ 4.0

คำตอบ:


1

ฉันเดาว่าเราไม่สามารถใช้การตรวจสอบพาส - ทรูหากคอมพิวเตอร์ไคลเอนต์ไม่อยู่กับโดเมนเดียวกัน หากคุณใช้การปรับใช้เว็บ 1.1 คุณสามารถลองใช้ storeCredentials และ getCredentials เพื่อหลีกเลี่ยงการใส่ชื่อผู้ใช้และรหัสผ่านโดยตรงในบรรทัดคำสั่ง


0

ฉันอาจไม่เข้าใจปัญหาของคุณอย่างเต็มที่ แต่คุณสามารถใช้แฟล็ก -storeCredentials และ -getCredentials เพื่อทำสิ่งนี้ได้หรือไม่


0

นี่เป็นคำตอบที่ชัดเจนและฉันแน่ใจว่าคุณได้แก้ไขหรือแก้ไขมันแล้ว แต่ในกรณีนี้จะช่วยคนอื่นได้:

คุณสามารถใช้ MSDeploy เพื่อปรับใช้แพคเกจโดยใช้การรับรองความถูกต้อง NTLM แม้ว่าเว็บเซิร์ฟเวอร์เป้าหมายจะอยู่ในโดเมนอื่น นี่คือ commandline ที่เราใช้:

msdeploy.exe -source:package='MyPackage.csproj.zip' -dest:auto,computerName='https://www.myserver.com:8172/MsDeploy.axd?site=mysitename',authtype='NTLM',includeAcls='False' -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"MyPackage.csproj.SetParameters.xml"

เพื่อให้ทำงานได้เราเรียกใช้คำสั่งนี้จากเครื่องต้นทางในบริบทความปลอดภัยของชื่อผู้ใช้ + รหัสผ่านที่ตรงกับชื่อผู้ใช้ + รหัสผ่านในโดเมนเป้าหมาย

ไฟล์ param อาจไม่มีการรับรองความถูกต้อง แต่ฉันเพิ่งรวมไว้เพื่อความสมบูรณ์ นี่คือวิธีที่เราใช้ในการใช้การเชื่อมต่อที่แตกต่างกันสำหรับแอพพลิเคชั่นขึ้นอยู่กับว่ามันถูกปรับใช้ที่ไหน

เราไม่ได้ใช้วิธีการ "ใช้เน็ต" เพื่อสร้างโทเค็นฉันไม่แน่ใจว่าสิ่งนี้แปลเป็นการรับรองความถูกต้อง NTLM ผ่าน HTTP ได้อย่างง่ายดาย


-3

ไปที่หน้า IIS Site Admin -> IIS -> การตรวจสอบความถูกต้อง

เปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุชื่อ -> ระบุผู้ใช้ของผู้เยี่ยมชม IIS (IUSER_computername)

ให้สิทธิ์ผู้ใช้ IIS แก่ผู้เยี่ยมชมบนเว็บไซต์ wwwroot โฟลเดอร์


โปรดอย่าสับสนการพิสูจน์ตัวตนแบบ passthru โดยไม่มีการพิสูจน์ตัวตนเลย
spoulson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.