Web Deploy ke IIS 7 dengan Pass-through authentication

12

Setelah banyak percobaan dan konfigurasi kesalahan, saya saat ini dapat skrip msdeploy.exe untuk menyebarkan paket yang dibangun di Visual Studio 2010 ke server jauh yang menjalankan IIS 7.5 dengan baris perintah seperti:

Perintah otentikasi dasar:

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

Bisakah saya menghilangkan keharusan memberikan kata sandi di baris perintah dengan mengaktifkan otentikasi pass-through? Dokumen Web Deploy menyebutkan parameter authType yang dapat menentukan 'NTLM', bukan Basic. Namun, setiap kali saya mencoba ini (lihat contoh di bawah), saya mendapatkan kesalahan yang menunjukkan 401. Web log WMSvc menunjukkan 401.2 dan tidak ada userid yang terisi dalam entri log itu, tidak seperti upaya sebelumnya menggunakan otentikasi Dasar yang benar-benar menunjukkan DOMAIN \ myuser. di log web. Tidak ada informasi berguna lainnya yang ditemukan di penampil acara baik klien atau server.

Catatan: Server web target ada di domain lain, jadi saya lakukan net use \\webserver /u:DOMAIN\myuseruntuk membuat token.

Upaya perintah otentikasi 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

Tampaknya msdeploy.exe tidak diautentikasi dengan benar dengan IIS di tingkat HTTP. Apa yang salah?

Klien adalah Windows XP, Server adalah Win2008R2. Keduanya menjalankan msdeploy.exe versi 7.1.618.0. Keduanya memiliki .NET 2.0, 3.5, dan 4.0 diinstal.

spoulson
sumber

Jawaban:

1

Saya kira kita tidak bisa menggunakan otentikasi pass-through jika komputer klien tidak tetap dengan domain yang sama. Jika Anda menggunakan penyebaran web 1.1, Anda dapat mencoba storeCredentials dan getCredentials untuk menghindari meletakkan nama pengguna dan kata sandi secara langsung di baris perintah.

sky100
sumber
0

Saya mungkin tidak sepenuhnya memahami masalah Anda, tetapi bisakah Anda menggunakan flag -storeCredentials dan -getCredentials untuk menyelesaikannya?

Jeffery Smith
sumber
0

Ini jelas merupakan jawaban yang terlambat dan saya yakin Anda telah menyelesaikan ini atau mengatasinya, tetapi jika ini membantu orang lain:

Anda pasti dapat menggunakan MSDeploy untuk menyebarkan paket menggunakan otentikasi NTLM bahkan ketika server web target berada di domain lain. Ini kira-kira baris perintah yang kami gunakan:

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"

Agar ini berfungsi, kami menjalankan perintah ini dari mesin sumber dalam konteks keamanan nama pengguna + kata sandi yang sama dengan nama pengguna + kata sandi pada domain target.

File param mungkin tidak ada hubungannya dengan otentikasi tetapi saya hanya memasukkannya untuk kelengkapan. Ini adalah metode yang kami gunakan untuk menerapkan string koneksi yang berbeda untuk aplikasi tergantung di mana ia digunakan.

Kami tidak menggunakan pendekatan "penggunaan bersih" untuk membuat token, saya tidak yakin ini diterjemahkan dengan mudah ke dalam otentikasi NTLM melalui HTTP.

Michael12345
sumber
-3

Buka halaman Admin Situs IIS -> IIS -> Otentikasi

Aktifkan Otentikasi Anonim -> tentukan pengguna tamu IIS (IUSER_computername)

Berikan izin pengguna tamu IIS pada folder situs web wwwroot.

Guido van Brakel
sumber
Tolong jangan bingung otentikasi passthru tanpa otentikasi sama sekali.
spoulson