2011-11-08 36 views
8

Tôi đã có một triển khai MSDeploy làm việc tốt đẹp với TeamCity khi tôi thông qua các thông tin người dùng. Các tham số dòng lệnh (sử dụng các biến env cho một số giá trị) là:Làm cách nào để triển khai bằng MSDeploy và TeamCity với Xác thực Windows Tích hợp?

MSBuild.exe Web.csproj
/P:Configuration=%env.Configuration%
/P:DeployOnBuild=True
/P:DeployTarget=MSDeployPublish
/P:MsDeployServiceUrl= https://%env.TargetServer%/MsDeploy.axd
/P:AllowUntrustedCertificate=True
/P:MSDeployPublishMethod=WMsvc
/P:CreatePackageOnPublish=True
/P:UserName=%env.AdminUser%
/P:Password=%env.AdminPassword%

Làm việc tuyệt vời. Nhưng bây giờ tôi muốn sử dụng auth tích hợp. Tôi đã cố gắng theo gợi ý của Troy qua từ Can MSBuild deploy using integrated authentication or only basic? nhưng nó không làm việc lừa. Tôi đã thử các kết hợp khác nhau để chuyển vào tên người dùng trống và chỉ định

/p:AuthType=NTLM

Gần nhất tôi nhận được bằng cách chỉ định/p: AuthType = NTLM và chuyển vào tên người dùng trống. Nhưng điều đó vẫn dẫn đến lỗi này:

Connected to the destination computer ("[my destination server name]") using the Web Management Service, but could not authorize. Make sure that you are using the correct user name and password, that the site you are connecting to exists, and that the credentials represent a user who has permissions to access the site. The remote server returned an error: (401) Unauthorized

Tôi có Dịch vụ quản lý web chạy trên cả máy chủ cục bộ và máy chủ từ xa. Tôi đã thay đổi cả hai trường hợp để chạy với tư cách là người dùng mà tôi biết có quyền truy cập thích hợp vào trang web - cùng một người dùng hoạt động nếu tôi tự chuyển qua bằng chứng xác thực.

Tôi cũng đã thử cho phép người dùng đó quyền quản lý IIS trên trang đích (mặc dù không chắc chắn lý do tại sao điều đó là cần thiết vì người dùng có thể xuất bản lên trang web khi thông tin đăng nhập của họ được chuyển theo cách thủ công).

Một điều tôi nhận thấy là trong nhật ký WMsvc nó không ghi nhật ký bất kỳ tên người dùng nào cho các lần thực hiện với xác thực NTLM.

Bất kỳ ý tưởng gì đang xảy ra ở đây. Tôi thực sự không muốn lưu trữ thông tin người dùng trong cấu hình TeamCity của mình.

Cảm ơn.

Trả lời

0

Tôi giả định rằng triển khai được thực hiện bằng tài khoản của TeamCity-Agent. Điều này sẽ giải thích lỗi của bạn. Đảm bảo rằng tài khoản này có các quyền thích hợp cho việc triển khai.

+0

Xem nhận xét ở trên. Câu trả lời ngắn gọn, nó có. – user1035941

1

Dịch vụ đại lý xây dựng có đang chạy trong tài khoản bạn muốn sử dụng không? Bạn đề cập đến dịch vụ quản lý web, nhưng hãy nhớ đó là đại lý xây dựng thực sự đang thực hiện công việc và cần các quyền.

+0

Xin lỗi tôi nên chỉ ra điều đó. Có, TeamCity Build Agent Service cũng đang chạy trong tài khoản có quyền phù hợp. Điều đó luôn xảy ra, tôi vừa cập nhật Dịch vụ quản lý web kể từ khi có lỗi "sử dụng Dịch vụ quản lý web". – user1035941

+0

@Bạn đã kết nối thành công với WMSvc bằng NTLM chưa? Một thử nghiệm đơn giản như 'msdeploy.exe -verb: dump -source: apphostconfig, wmsvc = SERVER123, tên người dùng =, authType = ntlm -allowUntrusted' nơi tôi là quản trị viên trên SERVER123, mang lại 401 lỗi. – arcain

12

Tôi biết tôi trễ một chút khi gửi và trả lời về điều này, nhưng vì lợi ích của bất kỳ ai khác theo đuổi loại vấn đề này, tôi vừa mới xoay xở để làm việc này.

Tương tự như OP, tôi đã cố gắng để có được TeamCity trên Windows Server 2008R2 để xuất bản một trang web trên một máy chủ IIS 7.5 từ xa bằng cách sử dụng WMsvc.

Tôi đã đấu tranh với sai số 401 cho đến khi tôi hoàn thành tất cả các bước sau:

  • Đảm bảo AuthType = tham số NTLM bộ.

  • Đảm bảo thông số Tên người dùng được cung cấp nhưng được đặt thành giá trị trống.

  • Đảm bảo xác thực NTLM kích hoạt trên máy chủ web từ xa, điều này liên quan đến việc thêm một mục nhập registry:

    HKLM\Software\Microsoft\WebManagement\Server 
    DWORD WindowsAuthenticationEnabled = 1 
    
  • Đảm bảo sử dụng bối cảnh theo đó các đại lý xây dựng chạy trên máy chủ xây dựng có thể làm thành công một auth cửa sổ tích hợp kết nối với WMsvc.Tôi thực sự phải đăng nhập vào máy chủ xây dựng như người dùng này, sau đó mở IE và thêm trang web mục tiêu vào Vùng Intranet cục bộ. Về cơ bản, tôi vẫn tiếp tục đánh URL này và thay đổi các thiết lập trong IE cho đến khi tôi có thể nhận thẳng vào nó mà không cần nhắc nhở xác thực hoặc 401 lỗi:

    https://[the server]:8172/MsDeploy.axd?site=[the site] 
    

Ngẫu nhiên, khi tôi đã làm việc auth, các WMSvc từ xa bắt đầu đưa ra tôi 404 lỗi trong brownser thay vào đó, mà hóa ra là một dấu hiệu tốt. Trong quá trình này, tôi cũng thiết lập một chứng chỉ SSL trên WMsvc từ xa được máy chủ xây dựng tin tưởng - có thể không phải là điều cần thiết nhưng nó đã giúp tôi thử nghiệm.

Một khi tôi đã hoàn thành, triển khai TeamCity trên bắt đầu báo cáo lỗi này:

An error occurred when the request was processed on the remote computer. 
The server experienced an issue processing the request. Contact the server administrator for more information. 

tôi không thể tìm thấy bất cứ điều gì hữu ích trong Event Log, nhưng việc sửa chữa ở đây chỉ là để đảm bảo rằng người dùng xác thực có các quyền hệ thống tập tin cần thiết trên thư mục đích. Bạn có thể muốn chọn lọc hơn, nhưng tôi chỉ cho họ toàn quyền Kiểm soát Inetpub.

+2

Chỉ cần một lưu ý cho bất cứ ai thêm phím reg WindowsAuthenticationEnabled theo cách thủ công - tìm hiểu từ 3 giờ tôi vừa lãng phí khắc phục sự cố triển khai và đảm bảo bạn không vô tình dán dấu cách vào tên khóa! Gah. – Michael12345

+0

+1 để chỉ ra vấn đề Vùng nội bộ cục bộ. Tôi đã nhận nó hoạt động khi tôi cố gắng sử dụng computerName = 'https: //192.168 ....: 8172' thay vì tên máy chủ. Tuy nhiên, việc chỉ định một tên người dùng trống có vẻ vô ích để làm cho nó hoạt động. –

Các vấn đề liên quan