Web Triển khai đến IIS 7 với xác thực Truyền qua


12

Sau nhiều lần thử và cấu hình lỗi, hiện tại tôi có thể kịch bản msdeploy.exe để triển khai gói được xây dựng trong Visual Studio 2010 đến một máy chủ từ xa chạy IIS 7.5 với một dòng lệnh như:

Lệnh xác thực cơ bản:

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

Tôi có thể loại bỏ nhu cầu cung cấp mật khẩu trong dòng lệnh bằng cách bật xác thực chuyển qua không? Các tài liệu Triển khai Web đề cập đến tham số authType có thể chỉ định 'NTLM', thay vì Cơ bản. Tuy nhiên, bất cứ khi nào tôi thử điều này (xem ví dụ bên dưới), tôi gặp lỗi khi chỉ ra 401. Nhật ký web WMSvc hiển thị 401.2 và không có userid nào được nhập trong mục nhật ký đó, không giống như các lần thử trước sử dụng Xác thực cơ bản thực sự hiển thị DOMAIN \ myuser trong nhật ký web. Không có thông tin hữu ích khác được tìm thấy trong trình xem sự kiện của máy khách hoặc máy chủ.

Lưu ý: Máy chủ web đích nằm trên một tên miền khác, vì vậy tôi thực hiện net use \\webserver /u:DOMAIN\myuserđể thiết lập mã thông báo.

Cố gắng thông qua lệnh xác thực:

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

Có vẻ như msdeploy.exe không xác thực chính xác với IIS ở cấp HTTP. Điều gì có thể sai?

Máy khách là Windows XP, Máy chủ là Win2008R2. Cả hai đều đang chạy msdeploy.exe phiên bản 7.1.618.0. Cả hai đều có cài đặt .NET 2.0, 3.5 và 4.0.

Câu trả lời:


1

Tôi đoán chúng ta không thể sử dụng xác thực thông qua nếu máy khách không ở cùng một miền. Nếu bạn sử dụng triển khai web 1.1, bạn có thể thử storeCredentials và getCredentials để tránh đặt tên người dùng và mật khẩu trực tiếp vào một dòng lệnh.


0

Tôi có thể không hoàn toàn hiểu vấn đề của bạn, nhưng bạn có thể sử dụng cờ -storeCredentials và -getCredentials để thực hiện việc này không?


0

Đây rõ ràng là một câu trả lời muộn và tôi chắc chắn rằng bạn đã giải quyết vấn đề này hoặc giải quyết vấn đề này, nhưng trong trường hợp điều này giúp người khác:

Bạn chắc chắn có thể sử dụng MSDeploy để triển khai gói bằng xác thực NTLM ngay cả khi máy chủ web đích nằm trên một tên miền khác. Đây gần như là dòng lệnh chúng tôi sử dụng:

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"

Để làm việc này, chúng tôi chạy lệnh này từ máy nguồn trong ngữ cảnh bảo mật của tên người dùng + mật khẩu khớp với tên người dùng + mật khẩu trên tên miền đích.

Tệp param có thể không có liên quan đến xác thực nhưng tôi chỉ đưa nó vào để hoàn thiện. Đây là phương pháp chúng tôi sử dụng để áp dụng các kết nối khác nhau cho ứng dụng tùy thuộc vào nơi nó được triển khai.

Chúng tôi không sử dụng phương pháp "sử dụng mạng" để thiết lập mã thông báo, tôi không chắc chắn rằng điều này dễ dàng chuyển thành xác thực NTLM qua HTTP.


-3

Chuyển đến trang Quản trị trang IIS -> IIS -> Xác thực

Bật Xác thực ẩn danh -> chỉ định người dùng khách IIS (IUSER_computername)

Cấp quyền cho người dùng IIS trên thư mục wwwroot của trang web.


Xin đừng nhầm lẫn xác thực passthru không có xác thực nào cả.
spoulson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.