Il meccanismo OAuth viene utilizzato contro l'API VSO al momento della scrittura di questo come apparentemente identificato. official docs for VSO OAuth tokens here.
Per on-prem tuttavia, è richiesta la seguente:
tramite un client javascript (nota sto usando jQuery per la richiesta Ajax qui)
Dal creds alternative o gettone ISN autenticazione basata 'disponibile on-prem per adeguarsi all'attuale implementazione vso; È possibile considerare il seguente approccio: Se si dispone delle autorizzazioni di amministratore sul livello dell'app TFS, è possibile configurare l'autenticazione di base per l'applicazione tfs in IIS e impostare il dominio predefinito.
E quindi richiamare come segue:
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);
});
NOTA IMPORTANTE! : Se abiliti l'autenticazione di base dovresti davvero configurare il tuo sito per l'uso di https o le tue credenziali verranno inviate in chiaro (come indicato nell'avviso visto -> in alto a destra dell'immagine sopra).
Via un client .NET
Nel on-prem (attualmente rtm'd: Aggiornamento 2015 1) L'API è generalmente gated/recintata con NTLM, il che significa una richiesta di pre-volo è reso, 401 restituito dal server alla richiesta di autenticazione, in questo caso, l'impostazione della richiesta Credenziali come segue consente la richiesta di autenticazione sul server una volta ricevuta la verifica preflight. Per accogliere la sfida si può fare questo:
request.Credentials = new NetworkCredential(this.UserName, this.Password);
//you may want to specify a domain too
Se hai attivato autenticazione di base per TFS su prem è possibile tentare l'autenticazione come segue questo criterio identifica il meccanismo utilizzato quando si richiama VSO dopo aver abilitato credenziali alternative in ui:
request.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(this.UserName + ":" + this.Password));
Nota: In un certo codice che ho modificato un paio di settimane fa; era necessario il supporto per VSO e on-prem, quindi ho utilizzato i due modelli sopra per gestire lo scenario specifico.
Grazie a @Elmar per condividere le tue risposte qui. Sto scrivendo più di java script, quindi sto cercando di scoprire come creare il token di accesso personale al posto di myPatToken nell'intestazione della richiesta "Autorizzazione" come menzionato qui? 'intestazioni: { 'Autorizzazione': 'Base' + btoa (" "+": "+ myPatToken) }' – vikkee
@vikkee si prega di consultare la risposta modificata. Ho fornito informazioni di base sull'autent e uno snippet di javascript. per quanto riguarda il token, io stesso mi piacerebbe su prem. – Elmar
Grazie per la tua sintassi javascript dettagliata, non ho il permesso o l'influenza sull'amministratore TFS al mio posto, quindi ho bisogno di trovare un modo per aggirarlo. È possibile scoprire quali tipi di autenticazione sono già abilitati dall'amministratore? – vikkee