Mechanizm OAuth jest używany przeciwko apsowi VSO w chwili pisania tego, tak jak się wydaje. official docs for VSO OAuth tokens here.
Dla on-prem jednak wymagane jest:
Via javascript klienta (uwaga używam jQuery dla żądania ajax tutaj)
Od alternatywnych creds lub tokena uwierzytelniania opartego ISN 't dostępny on-prem, aby dopasować bieżącą implementację vso; Możesz rozważyć następujące podejście: Jeśli masz uprawnienia administratora w warstwie aplikacji TFS, możesz skonfigurować podstawowe uwierzytelnianie dla aplikacji tfs w IIS, a ustawić domyślną domenę.
A potem wywołać następująco:
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);
});
WAŻNA UWAGA! : Jeśli włączysz podstawową autoryzację, powinieneś skonfigurować swoją stronę tak, aby używała https, lub twoje dane uwierzytelniające będą wysyłane w postaci czystego tekstu (jak wskazano w ostrzeżeniu -> w prawym górnym rogu powyższego obrazu).
Via klienta .NET
W on-prem (obecnie rtm'd: 2015 Update 1) API jest zazwyczaj zamkniętym/odgrodzony z NTLM, czyli wniosek przed lotem jest wykonane, 401 zwrócone z serwera do wyzwania dla uwierzytelnienia, w tym przypadku ustawienie żądania Credential w następujący sposób umożliwia żądanie uwierzytelnienia się na serwerze po otrzymaniu żądania preflight. Aby sprostać wyzwaniu można to zrobić:
request.Credentials = new NetworkCredential(this.UserName, this.Password);
//you may want to specify a domain too
Jeśli masz włączone podstawowego uwierzytelniania dla TFS na prem można podjąć próbę uwierzytelniania w następujący sposób, ten wzór pasuje mechanizm wykorzystywany podczas wywoływania VSO po włączeniu alternatywnych poświadczeń w ui:
request.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(this.UserName + ":" + this.Password));
Uwaga: W jakimś kodzie zmodyfikowałem kilka tygodni temu; obsługa VSO i "on-prem" była wymagana, więc zastosowałem dwa powyższe schematy, aby poradzić sobie z konkretnym scenariuszem.
Dzięki @ Elmar za udostępnienie odpowiedzi tutaj. Piszę więcej skryptu java, więc próbuję dowiedzieć się, jak utworzyć token dostępu osobistego zamiast myPatToken w nagłówku żądania "Autoryzacja", jak wspomniano tutaj? 'nagłówki: { 'Autoryzacja': 'Basic' + btoa (" "+": "+ myPatToken) }' – vikkee
@vikkee zobacz zmodyfikowaną odpowiedź. Dostarczyłem podstawowe informacje o autorze i fragment kodu javascript. jeśli chodzi o token, sam chciałbym to zrobić z wyprzedzeniem. – Elmar
Dziękuję za szczegółową składnię javascript, nie mam uprawnień ani wpływu na administratora TFS w moim imieniu, więc muszę najpierw znaleźć sposób obejścia tego. Czy możliwe jest sprawdzenie, jakie rodzaje uwierzytelniania są już włączone przez administratora? – vikkee