Cơ chế OAuth được sử dụng chống lại api VSO tại thời điểm viết bài này khi bạn dường như đã được xác định. official docs for VSO OAuth tokens here.
Đối tại chỗ nhỏ Tuy nhiên, sau đây là cần thiết:
Qua một khách hàng javascript (lưu ý tôi đang sử dụng jquery cho yêu cầu ajax đây)
Kể từ creds thay thế hoặc Token dựa auth isn không có sẵn trên thị trường để phù hợp với thực hiện hiện tại vso; Bạn có thể xem xét cách tiếp cận sau: Nếu bạn có quyền quản trị trên tầng ứng dụng TFS, bạn có thể định cấu hình xác thực cơ bản cho ứng dụng tfs trong IIS và đặt miền mặc định.
Và sau đó gọi như sau:
var self = this;
self.tasksURI = 'https://<SERVER>/tfs/<COLLECTION>/<PROJECT>/_apis/build/builds?api-version=2.0';
self.username = "<USERNAME>"; //basic username so no domain here.
self.password = "<PASSWORD>";
self.ajax = function (uri, method, data) {
var request = {
url: uri,
type: method,
contentType: "application/json",
accepts: "application/json",
cache: false,
dataType: 'json',
data: JSON.stringify(data),
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa(self.username + ":" + self.password));
},
error: function (jqXHR) {
console.log("ajax error " + jqXHR.status);
}
};
return $.ajax(request);
}
self.ajax(self.tasksURI, 'GET').done(function (data) {
alert(data);
});
LƯU Ý QUAN TRỌNG! : Nếu bạn bật xác thực cơ bản, bạn thực sự nên định cấu hình trang web của mình để sử dụng https quá hoặc thông tin đăng nhập của bạn sẽ được gửi bằng văn bản rõ ràng (như được chỉ ra trong cảnh báo nhìn thấy -> trên cùng bên phải của hình ảnh ở trên).
Qua một khách hàng NET
Trong tại chỗ nhỏ (hiện rtm'd: 2015 cập nhật 1) api thường được gated/rào lại với NTLM, có nghĩa là một yêu cầu trước chuyến bay là thực hiện, 401 trở về từ máy chủ để thử thách auth, trong trường hợp này, đặt yêu cầu Thông tin xác thực như sau cho phép yêu cầu xác thực đối với máy chủ sau khi nhận được thử thách preflight. Để thích ứng với thách thức bạn có thể làm điều này:
request.Credentials = new NetworkCredential(this.UserName, this.Password);
//you may want to specify a domain too
Nếu bạn đã kích hoạt auth cơ bản cho TFS dữ liệu tại chỗ, bạn có thể cố gắng chứng thực như sau, mô hình này phù hợp với cơ chế sử dụng khi gọi VSO sau khi kích hoạt thông tin thay thế trong ui:
request.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(this.UserName + ":" + this.Password));
Lưu ý: Trong một số mã tôi đã sửa đổi một vài tuần trước; hỗ trợ cho cả VSO và on-prem là bắt buộc vì vậy tôi đã sử dụng hai mẫu trên để xử lý kịch bản cụ thể.
Cảm ơn @Elmar đã chia sẻ câu trả lời của bạn tại đây. Tôi đang viết nhiều kịch bản java, vì vậy tôi đang cố gắng tìm hiểu cách tạo mã thông báo truy cập cá nhân thay cho myPatToken trong tiêu đề yêu cầu "Ủy quyền" như đã đề cập ở đây? 'tiêu đề: { 'Ủy quyền': 'Cơ bản' + btoa (" "+": "+ myPatToken) }' – vikkee
@vikkee vui lòng xem câu trả lời đã sửa đổi. Tôi đã cung cấp thông tin xác thực cơ bản và đoạn mã javascript. như xa như các mã thông báo là có liên quan, tôi bản thân mình muốn nó vào đầu. – Elmar
Cảm ơn nhiều vì cú pháp javascript chi tiết của bạn, tôi không có sự cho phép hoặc ảnh hưởng đối với quản trị viên TFS tại địa điểm của tôi, vì vậy trước tiên tôi cần tìm ra cách để giải quyết nó. Có thể tìm hiểu xem tất cả các loại xác thực đã được quản trị viên bật chưa? – vikkee