Authentifizieren des Zugriffs auf REST-APIs mit OAuth 2.0

Azure DevOps Services

Hinweis

Die folgende Anleitung richtet sich an Azure DevOps Services Benutzer, da OAuth 2.0 auf der Azure DevOps Server. Clientbibliotheken sind eine Reihe von Paketen, die speziell für die Erweiterung Azure DevOps Server erstellt wurden. Für lokale Benutzer empfehlen wir die Verwendung von Clientbibliotheken, Windows-Authentifizierung oder persönlichen Zugriffstoken (Personal Access Tokens, PATs), um sich im Namen eines Benutzers zu authentifizieren.

Authentifizieren Sie Ihre Web-App-Benutzer für den REST-API-Zugriff, damit Ihre App nicht weiterhin nach Benutzernamen und Kennwörtern fragt. Azure DevOps Services verwendet das OAuth 2.0-Protokoll, um Ihre App für einen Benutzer zu autorisieren und ein Zugriffstoken zu generieren. Verwenden Sie dieses Token, wenn Sie die REST-APIs aus Ihrer Anwendung aufrufen.

Wenn Sie Azure DevOps Services-APIs für diesen Benutzer aufrufen, verwenden Sie das Zugriffstoken dieses Benutzers. Zugriffstoken laufen ab. Aktualisieren Sie daher das Zugriffstoken, wenn es abgelaufen ist.

Prozess zum Erhalten der Autorisierung.

Ein C#-Beispiel für den gesamten Flow finden Sie unter vsts-auth-samples.

Registrieren der App

Wechseln Sie https://app.vsaex.visualstudio.com/app/register zu , um Ihre App zu registrieren.

Stellen Sie sicher, dass Sie die Bereiche auswählen, die Ihre Anwendung benötigt, und verwenden Sie dann dieselben Bereiche, wenn Sie Ihre App autorisieren. Wenn Sie Ihre App mithilfe der Vorschau-APIs registriert haben, registrieren Sie sich erneut, da die von Ihnen verwendeten Bereiche jetzt veraltet sind.

Wenn Azure DevOps Services die Autorisierungsgenehmigungsseite für Ihren Benutzer präsentiert, werden ihr Unternehmensname, App-Name und Beschreibungen verwendet. Außerdem werden die URLs für Die Website Ihres Unternehmens, die App-Website sowie die Nutzungsbedingungen und Datenschutzbestimmungen verwendet.

Visual Studio Codespaces-Autorisierungsseite mit Ihren Unternehmens- und App-Informationen.

Wenn Azure DevOps Services um die Autorisierung eines Benutzers bittet und der Benutzer sie gewährt, wird der Browser des Benutzers mit dem Autorisierungscode an Ihre Autorisierungsrückruf-URL umgeleitet. Die Rückruf-URL muss eine sichere Verbindung (HTTPS) sein, um den Code zurück an die App zu übertragen. Er muss genau mit der URL übereinstimmen, die in Ihrer App registriert ist. Wenn dies nicht der Fehler ist, wird eine 400-Fehlerseite anstelle einer Seite angezeigt, auf der der Benutzer aufgefordert wird, Ihrer App eine Autorisierung zu erteilen.

Wenn Sie Ihre App registrieren, wird die Seite mit den Anwendungseinstellungen angezeigt.

Anwendungseinstellungen, die für Ihre App angezeigt werden.

Rufen Sie die Autorisierungs-URL auf, und übergeben Sie Ihre App-ID und autorisierte Bereiche, wenn Sie möchten, dass ein Benutzer Ihre App für den Zugriff auf ihre Organisation autorisiert. Rufen Sie die Zugriffstoken-URL auf, wenn Sie ein Zugriffstoken zum Aufrufen einer Azure DevOps Services REST-API abrufen möchten.

Die Einstellungen für jede App, die Sie registrieren, sind in Ihrem Profil https://app.vssps.visualstudio.com/profile/view verfügbar.

Autorisieren Ihrer App

Wenn Ihr Benutzer Ihre App noch nicht für den Zugriff auf ihre Organisation autorisiert hat, rufen Sie die Autorisierungs-URL auf.

https://app.vssps.visualstudio.com/oauth2/authorize
        ?client_id={app ID}
        &response_type={Assertion}
        &state={state}
        &scope={scope}
        &redirect_uri={callback URL}
Parameter Typ Hinweise
client_id GUID Die ID, die Ihrer App bei der Registrierung zugewiesen wurde.
response_type Zeichenfolge Assertion
state Zeichenfolge Kann ein beliebiger Wert sein. In der Regel ein generierter Zeichenfolgenwert, der den Rückruf mit der zugeordneten Autorisierung korreliert. Anfrage.
scope Zeichenfolge Bereiche, die bei der App registriert sind. Leerzeichen getrennt. Weitere Informationen finden Sie unter Verfügbare Bereiche.
redirect_uri URL Rückruf-URL für Ihre App. Muss genau mit der URL übereinstimmen, die bei der App registriert ist.

Azure DevOps Services fordert Ihren Benutzer auf, Ihre App zu autorisieren. Er verarbeitet die Authentifizierung und ruft Sie dann mit einem Autorisierungscode zurück, wenn der Benutzer die Autorisierung genehmigt.

Fügen Sie Ihrer Website einen Link oder eine Schaltfläche hinzu, über den der Benutzer zum Azure DevOps Services autorisierungsendpunkt führt:

https://app.vssps.visualstudio.com/oauth2/authorize
        ?client_id=88e2dd5f-4e34-45c6-a75d-524eb2a0399e
        &response_type=Assertion
        &state=User1
        &scope=vso.work%20vso.code_write
        &redirect_uri=https://fabrikam.azurewebsites.net/myapp/oauth-callback

Azure DevOps Services fordert den Benutzer auf, Ihre App zu autorisieren.

Wenn der Benutzer dies akzeptiert, leitet Azure DevOps Services den Browser des Benutzers an Ihre Rückruf-URL um, einschließlich eines kurzlebigen Autorisierungscodes und des in der Autorisierungs-URL angegebenen Zustandswerts:

https://fabrikam.azurewebsites.net/myapp/oauth-callback
        ?code={authorization code}
        &state=User1

Abrufen eines Zugriffs- und Aktualisierungstokens für den Benutzer

Nun verwenden Sie den Autorisierungscode, um ein Zugriffstoken (und Aktualisierungstoken) für den Benutzer an fordern. Ihr Dienst muss eine Dienst-zu-Dienst-HTTP-Anforderung an Azure DevOps Services.

URL: Autorisieren der App

POST https://app.vssps.visualstudio.com/oauth2/token

HTTP-Anforderungsheader – Autorisieren der App

Header Wert
Content-Type application/x-www-form-urlencoded
Content-Length Berechnete Zeichenfolgenlänge des Anforderungskörpers (siehe folgendes Beispiel)
Content-Type: application/x-www-form-urlencoded
Content-Length: 1322

HTTP-Anforderungskörper – Autorisieren der App

client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={0}&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={1}&redirect_uri={2}

Ersetzen Sie die Platzhalterwerte im vorherigen Beispielanforderungstext:

  • {0}: URL-codierter geheimer Clientschlüssel, der bei der Registrierung der App erworben wurde
  • {1}: URL-codierter "Code", der über den code Abfrageparameter für Ihre Rückruf-URL bereitgestellt wird
  • {2}: Rückruf-URL, die bei der App registriert ist

C#-Beispiel zum Erstellen des Anforderungskörpers – Autorisieren der App

public string GenerateRequestPostData(string appSecret, string authCode, string callbackUrl)
{
   return String.Format("client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={0}&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={1}&redirect_uri={2}",
               HttpUtility.UrlEncode(appSecret),
               HttpUtility.UrlEncode(authCode),
               callbackUrl
        );
}

Antwort: App autorisieren

{
    "access_token": { access token for the user },
    "token_type": { type of token },
    "expires_in": { time in seconds that the token remains valid },
    "refresh_token": { refresh token to use to acquire a new access token }
}

Wichtig

Halten Sie die refresh_token sicher, damit Ihre App den Benutzer nicht erneut zur Autorisierung auffordern muss. Zugriffstoken laufen relativ schnell ab und sollten nicht beibehalten werden.

Verwenden des Zugriffstokens

Um ein Zugriffstoken zu verwenden, fügen Sie es als Bearertoken in den Autorisierungsheader Ihrer HTTP-Anforderung ein:

Authorization: Bearer {access_token}

Beispielsweise die HTTP-Anforderung zum Erhalten der letzten Builds für ein Projekt:

GET https://dev.azure.com/myaccount/myproject/_apis/build-release/builds?api-version=3.0
Authorization: Bearer {access_token}

Aktualisieren eines abgelaufenen Zugriffstokens

Wenn das Zugriffstoken eines Benutzers abläuft, können Sie das Aktualisierungstoken verwenden, das er im Autorisierungsfluss erhalten hat, um ein neues Zugriffstoken abzurufen. Dies ist wie der ursprüngliche Prozess zum Austauschen des Autorisierungscodes gegen ein Zugriffs- und Aktualisierungstoken.

URL – Aktualisierungstoken

POST https://app.vssps.visualstudio.com/oauth2/token

HTTP-Anforderungsheader – Aktualisierungstoken

Header Wert
Content-Type application/x-www-form-urlencoded
Content-Length Berechnete Zeichenfolgenlänge des Anforderungskörpers (siehe folgendes Beispiel)
Content-Type: application/x-www-form-urlencoded
Content-Length: 1654

HTTP-Anforderungskörper – Aktualisierungstoken

client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={0}&grant_type=refresh_token&assertion={1}&redirect_uri={2}

Ersetzen Sie die Platzhalterwerte im vorherigen Beispielanforderungstext:

  • {0}: URL-codierter geheimer Clientschlüssel, der bei der Registrierung der App erworben wurde
  • {1}: URL-codiertes Aktualisierungstoken für den Benutzer
  • {2}: Rückruf-URL, die bei der App registriert ist

Antwort: Aktualisierungstoken

{
    "access_token": { access token for this user },
    "token_type": { type of token },
    "expires_in": { time in seconds that the token remains valid },
    "refresh_token": { new refresh token to use when the token has timed out }
}

Wichtig

Für den Benutzer wird ein neues Aktualisierungstoken ausgestellt. Dieses neue Token dauerhaft beibehalten und verwenden, wenn Sie das nächste Mal ein neues Zugriffstoken für den Benutzer abrufen müssen.

Bereiche

Wichtig

Bereiche ermöglichen nur den Zugriff auf REST-APIs, und wählen Sie Git-Endpunkte aus. Der SOAP-API-Zugriff wird nicht unterstützt.

Category `Scope` Name Beschreibung
Agentpools vso.agentpools Agentpools (Lesen) Gewährt die Möglichkeit zum Anzeigen von Aufgaben, Pools, Warteschlangen, Agents und aktuell ausgeführten oder kürzlich abgeschlossenen Aufträgen für Agents.
vso.agentpools_manage Agentpools (Lesen, Verwalten) Gewährt die Möglichkeit, Pools, Warteschlangen und Agents zu verwalten.
vso.environment_manage Umgebung (Lesen, Verwalten) Gewährt die Möglichkeit, Pools, Warteschlangen, Agents und Umgebungen zu verwalten.
Analyse vso.analytics Analyse (Lesen) Gewährt die Möglichkeit zum Abfragen von Analysedaten.
Überwachungsprotokoll vso.auditlog Überwachungsprotokoll (Lesen) Gewährt Benutzern die Möglichkeit, das Überwachungsprotokoll zu lesen.
Build vso.build Erstellen (Lesen) Gewährt die Möglichkeit, auf Buildartefakte zu zugreifen, einschließlich Buildergebnissen, Definitionen und Anforderungen, sowie die Möglichkeit, Benachrichtigungen über Buildereignisse über Diensthooks zu empfangen.
vso.build_execute Erstellen (Lesen und Ausführen) Gewährt die Möglichkeit, auf Buildartefakte zu zugreifen, einschließlich Buildergebnissen, Definitionen und Anforderungen, sowie die Möglichkeit, einen Build in die Warteschlange zu stellen, Buildeigenschaften zu aktualisieren und Benachrichtigungen über Buildereignisse über Diensthooks zu empfangen.
Code vso.code Code (Lesen) Gewährt die Möglichkeit, Quellcode und Metadaten zu Commits, Changesets, Verzweigungen und anderen Versionskontrollartefakten zu lesen. Gewährt auch die Möglichkeit, Code zu durchsuchen und über Diensthooks über Versionskontrollereignisse benachrichtigt zu werden.
vso.code_write Code (Lesen und Schreiben) Gewährt die Möglichkeit, Quellcode zu lesen, zu aktualisieren und zu löschen, auf Metadaten zu Commits, Changesets, Verzweigungen und anderen Versionskontrollartefakten zu zugreifen. Gewährt auch die Möglichkeit, Pull Requests und Code reviews zu erstellen und zu verwalten und Benachrichtigungen über Versionskontrollereignisse über Diensthooks zu empfangen.
vso.code_manage Code (Lesen, Schreiben und Verwalten) Gewährt die Möglichkeit, Quellcode zu lesen, zu aktualisieren und zu löschen, auf Metadaten zu Commits, Changesets, Verzweigungen und anderen Versionskontrollartefakten zu zugreifen. Gewährt auch die Möglichkeit, Coderepos repositorys zu erstellen und zu verwalten, Pull Requests und Code reviews zu erstellen und zu verwalten und Benachrichtigungen über Versionskontrollereignisse über Diensthooks zu empfangen.
vso.code_full Code (vollständig) Gewährt Vollzugriff auf Quellcode, Metadaten zu Commits, Changesets, Branches und anderen Versionskontrollartefakten. Gewährt auch die Möglichkeit, Coderepos repositorys zu erstellen und zu verwalten, Pull Requests und Code reviews zu erstellen und zu verwalten und Benachrichtigungen über Versionskontrollereignisse über Diensthooks zu empfangen. Umfasst auch eingeschränkte Unterstützung für Client-OM-APIs.
vso.code_status Code (Status) Gewährt die Möglichkeit zum Lesen und Schreiben des Commit- und Pull Request-Status.
Ansprüche vso.entitlements Berechtigungen (Lesen) Bietet schreibgeschützten Zugriff auf den Lizenzierungsberechtigungsendpunkt, um Kontoberechtigungen zu erhalten.
vso.memberentitlementmanagement MemberEntitlement Management (read) (MemberEntitlement-Verwaltung (Lesen)) Gewährt Benutzern die Möglichkeit, Benutzer, ihre Lizenzen sowie Projekte und Erweiterungen zu lesen, auf die sie zugreifen können.
vso.memberentitlementmanagement_write MemberEntitlement Management (write) (MemberEntitlement-Verwaltung (Schreiben)) Gewährt die Möglichkeit, Benutzer, ihre Lizenzen sowie Projekte und Erweiterungen zu verwalten, auf die sie zugreifen können.
Erweiterungen vso.extension Erweiterungen (Lesen) Gewährt die Möglichkeit, installierte Erweiterungen zu lesen.
vso.extension_manage Erweiterungen (Lesen und Verwalten) Gewährt die Möglichkeit, installierte Erweiterungen zu installieren, zu deinstallieren und andere administrative Aktionen durchzuführen.
vso.extension.data Erweiterungsdaten (Lesen) Gewährt die Möglichkeit, von installierten Erweiterungen gespeicherte Daten (Einstellungen und Dokumente) zu lesen.
vso.extension.data_write Erweiterungsdaten (Lesen und Schreiben) Gewährt die Möglichkeit zum Lesen und Schreiben von Daten (Einstellungen und Dokumente), die von installierten Erweiterungen gespeichert werden.
Graph Identität vso.graph Graph (Lesen) Gewährt die Möglichkeit, Benutzer-, Gruppen-, Bereichs- und Gruppenmitgliedschaftsinformationen zu lesen.
vso.graph_manage Graph (verwalten) Gewährt die Möglichkeit, Benutzer-, Gruppen-, Bereichs- und Gruppenmitgliedschaftsinformationen zu lesen und Benutzer, Gruppen und Gruppenmitgliedschaften zu verwalten.
vso.identity Identität (Lesen) Gewährt die Möglichkeit, Identitäten und Gruppen zu lesen.
vso.identity_manage Identität (verwalten) Gewährt die Möglichkeit, Identitäten und Gruppen zu lesen, zu schreiben und zu verwalten.
Auslastungstest vso.loadtest Auslastungstest (Lesen) Gewährt die Möglichkeit, Ihre Auslastungstestläufe, Testergebnisse und APM-Artefakte zu lesen.
vso.loadtest_write Auslastungstest (Lesen und Schreiben) Gewährt die Möglichkeit, Auslastungstestläufe zu erstellen und zu aktualisieren und Metadaten einschließlich Testergebnissen und APM-Artefakten zu lesen.
Computergruppe vso.machinegroup_manage Bereitstellungsgruppe (Lesen, Verwalten) Bietet die Möglichkeit, Bereitstellungsgruppe und Agentpools zu verwalten.
Marketplace vso.gallery Marketplace Gewährt Lesezugriff auf öffentliche und private Elemente und Herausgeber.
vso.gallery_acquire Marketplace (erwerben) Gewährt Lesezugriff und die Möglichkeit, Elemente zu erhalten.
vso.gallery_publish Marketplace (veröffentlichen) Gewährt Lesezugriff und die Möglichkeit zum Hochladen, Aktualisieren und Freigeben von Elementen.
vso.gallery_manage Marketplace (verwalten) Gewährt Lesezugriff und die Möglichkeit, Elemente und Herausgeber zu veröffentlichen und zu verwalten.
Benachrichtigungen vso.notification Benachrichtigungen (Lesen) Bietet Lesezugriff auf Abonnements und Ereignismetadaten, einschließlich filterbarer Feldwerte.
vso.notification_write Benachrichtigungen (Schreiben) Bietet Lese- und Schreibzugriff auf Abonnements und Lesezugriff auf Ereignismetadaten, einschließlich filterbarer Feldwerte.
vso.notification_manage Benachrichtigungen (verwalten) Bietet Lese-, Schreib- und Verwaltungszugriff auf Abonnements und Lesezugriff auf Ereignismetadaten, einschließlich filterbarer Feldwerte.
vso.notification_diagnostics Benachrichtigungen (Diagnose) Bietet Zugriff auf Benachrichtigungsdiagnoseprotokolle und bietet die Möglichkeit, Diagnosen für einzelne Abonnements zu aktivieren.
Verpackung vso.packaging Verpacken (Lesen) Gewährt die Möglichkeit zum Lesen von Feeds und Paketen.
vso.packaging_write Verpacken (Lesen und Schreiben) Gewährt die Möglichkeit, Feeds und Pakete zu erstellen und zu lesen.
vso.packaging_manage Verpacken (Lesen, Schreiben und Verwalten) Gewährt die Möglichkeit, Feeds und Pakete zu erstellen, zu lesen, zu aktualisieren und zu löschen.
Project und Team vso.project Projekt und Team (Lesen) Gewährt die Möglichkeit, Projekte und Teams zu lesen.
vso.project_write Project und Team (Lesen und Schreiben) Gewährt die Möglichkeit, Projekte und Teams zu lesen und zu aktualisieren.
vso.project_manage Project und Team (Lesen, Schreiben und Verwalten) Gewährt die Möglichkeit, Projekte und Teams zu erstellen, zu lesen, zu aktualisieren und zu löschen.
Release vso.release Release (Lesen) Gewährt die Möglichkeit zum Lesen von Releaseartefakten, einschließlich Releases, Releasedefinitionen und Releaseumgebung.
vso.release_execute Release (Lesen, Schreiben und Ausführen) Gewährt die Möglichkeit zum Lesen und Aktualisieren von Releaseartefakten, einschließlich Releases, Releasedefinitionen und Releaseumgebung, sowie die Möglichkeit, ein neues Release in die Warteschlange zu stellen.
vso.release_manage Release (Lesen, Schreiben, Ausführen und Verwalten) Gewährt die Möglichkeit, Releaseartefakte wie Releases, Releasedefinitionen und Releaseumgebungen zu lesen, zu aktualisieren und zu löschen sowie ein neues Release in die Warteschlange zu stellen und zu genehmigen.
Security vso.security_manage Sicherheit (verwalten) Gewährt die Möglichkeit zum Lesen, Schreiben und Verwalten von Sicherheitsberechtigungen.
Verwenden einer Dienstverbindung vso.serviceendpoint Dienstendpunkte (Lesen) Gewährt die Möglichkeit, Dienstendpunkte zu lesen.
vso.serviceendpoint_query Dienstendpunkte (Lesen und Abfragen) Gewährt die Möglichkeit zum Lesen und Abfragen von Dienstendpunkten.
vso.serviceendpoint_manage Dienstendpunkte (Lesen, Abfragen und Verwalten) Gewährt die Möglichkeit zum Lesen, Abfragen und Verwalten von Dienstendpunkten.
Einstellungen vso.settings Einstellungen (Lesen) Gewährt die Möglichkeit, Einstellungen zu lesen.
vso.settings_write Einstellungen (Lesen und Schreiben) Gewährt die Möglichkeit, Einstellungen zu erstellen und zu lesen.
Symbols vso.symbols Symbole (Lesen) Gewährt die Möglichkeit, Symbole zu lesen.
vso.symbols_write Symbole (Lesen und Schreiben) Gewährt die Möglichkeit, Symbole zu lesen und zu schreiben.
vso.symbols_manage Symbole (Lesen, Schreiben und Verwalten) Gewährt die Möglichkeit, Symbole zu lesen, zu schreiben und zu verwalten.
Aufgabengruppen vso.taskgroups_read Aufgabengruppen (Lesen) Gewährt die Möglichkeit, Aufgabengruppen zu lesen.
vso.taskgroups_write Aufgabengruppen (Lesen, Erstellen) Gewährt die Möglichkeit, Aufgabengruppen zu lesen und zu erstellen.
vso.taskgroups_manage Aufgabengruppen (Lesen, Erstellen und Verwalten) Gewährt die Möglichkeit, Taskgruppen zu lesen, zu erstellen und zu verwalten.
Teamdashboard vso.dashboards Teamdashboards (Lesen) Gewährt die Möglichkeit, Teamdashboardinformationen zu lesen.
vso.dashboards_manage Teamdashboards (verwalten) Gewährt die Möglichkeit, Teamdashboardinformationen zu verwalten.
Testverwaltung vso.test Testverwaltung (Lesen) Gewährt die Möglichkeit, Testpläne, Fälle, Ergebnisse und andere Artefakte im Zusammenhang mit der Testverwaltung zu lesen.
vso.test_write Testverwaltung (Lesen und Schreiben) Gewährt die Möglichkeit, Testpläne, Fälle, Ergebnisse und andere Artefakte im Zusammenhang mit der Testverwaltung zu lesen, zu erstellen und zu aktualisieren.
Token vso.tokens Delegierte Autorisierungstoken Gewährt Benutzern die Möglichkeit, delegierte Autorisierungstoken zu verwalten.
vso.tokenadministration Tokenverwaltung Gewährt Organisationsadministratoren die Möglichkeit, vorhandene Token zu verwalten (anzeigen und widerrufen).
Benutzerprofil vso.profile Benutzerprofil (Lesen) Gewährt die Möglichkeit, Ihr Profil, Ihre Konten, Sammlungen, Projekte, Teams und andere Organisationsartefakte der obersten Ebene zu lesen.
vso.profile_write Benutzerprofil (Schreiben) Gewährt die Möglichkeit, in Ihr Profil zu schreiben.
Variablengruppen vso.variablegroups_read Variablengruppen (Lesen) Gewährt die Möglichkeit, Variablengruppen zu lesen.
vso.variablegroups_write Variablengruppen (Lesen, Erstellen) Gewährt die Möglichkeit, Variablengruppen zu lesen und zu erstellen.
vso.variablegroups_manage Variablengruppen (Lesen, Erstellen und Verwalten) Gewährt die Möglichkeit, Variablengruppen zu lesen, zu erstellen und zu verwalten.
Wiki vso.wiki Wiki (lesen) Gewährt die Möglichkeit, Wikis, Wiki-Seiten und Wiki-Anlagen zu lesen. Gewährt auch die Möglichkeit, Wiki-Seiten zu durchsuchen.
vso.wiki_write Wiki (Lesen und Schreiben) Gewährt die Möglichkeit, Wikis, Wiki-Seiten und Wiki-Anlagen zu lesen, zu erstellen und zu aktualisieren.
Arbeitselemente vso.work Arbeitselemente (Lesen) Gewährt die Möglichkeit zum Lesen von Arbeitselementen, Abfragen, Boards, Bereichs- und Iterationspfaden und anderen Metadaten im Zusammenhang mit der Arbeitselementnachverfolgung. Gewährt auch die Möglichkeit, Abfragen auszuführen, Arbeitselemente zu suchen und Benachrichtigungen über Arbeitselementereignisse über Diensthooks zu empfangen.
vso.work_write Arbeitselemente (Lesen und Schreiben) Gewährt die Möglichkeit, Arbeitselemente und Abfragen zu lesen, zu erstellen und zu aktualisieren, Boardmetadaten, Lesebereichs- und Iterationspfade für andere Metadaten im Zusammenhang mit der Arbeitselementnachverfolgung zu aktualisieren, Abfragen auszuführen und Benachrichtigungen über Arbeitselementereignisse über Diensthooks zu empfangen.
vso.work_full Arbeitselemente (vollständig) Gewährt Vollzugriff auf Arbeitselemente, Abfragen, Backlogs, Pläne und Nachverfolgungsmetadaten für Arbeitselemente. Bietet auch die Möglichkeit, Benachrichtigungen über Arbeitselementereignisse über Diensthooks zu empfangen.

Registrieren Sie Ihre App, und verwenden Sie Bereiche, um anzugeben, welche Berechtigungen in Azure DevOps Services für Ihre App erforderlich sind. Wenn Ihre Benutzer Ihre App für den Zugriff auf ihre Organisation autorisieren, autorisieren sie sie für diese Bereiche. Das Anfordern der Autorisierung übergibt dieselben Bereiche, die Sie registriert haben.

Weitere Informationen finden Sie unter Erstellen von Arbeitselementnachverfolgung/Anlagen.

Beispiele

Ein C#-Beispiel, das OAuth zum Aufrufen Azure DevOps Services REST-APIs implementiert, finden Sie in unserem C#-OAuth GitHub Beispiel.

Häufig gestellte Fragen (FAQs)

F: Kann ich OAuth mit meiner Mobiltelefon-App verwenden?

A: Nein. Azure DevOps Services unterstützt nur den Webserverfluss, sodass es keine Möglichkeit gibt, OAuth zu implementieren, da Sie das App-Geheimnis nicht sicher speichern können.

F: Welche Fehler oder besonderen Bedingungen muss ich in meinem Code behandeln?

A: Stellen Sie sicher, dass Sie die folgenden Bedingungen behandeln:

  • Wenn Ihr Benutzer den Zugriff auf Ihre App verweigert, wird kein Autorisierungscode zurückgegeben. Verwenden Sie den Autorisierungscode nicht ohne Überprüfung auf Verweigerung.
  • Wenn Ihr Benutzer die Autorisierung Ihrer App widerruft, ist das Zugriffstoken nicht mehr gültig. Wenn Ihre App das Token für den Zugriff auf Daten verwendet, wird ein 401-Fehler zurückgegeben. Fordern Sie die Autorisierung erneut an.

F: Ich möchte meine Web-App lokal debuggen. Kann ich localhost für die Rückruf-URL verwenden, wenn ich meine App registriere?

A: Ja. Azure DevOps Services lässt jetzt localhost in Ihrer Rückruf-URL zu. Stellen Sie sicher, dass Sie https://localhost als Anfang Ihrer Rückruf-URL verwenden, wenn Sie Ihre App registrieren.

F: Ich erhalte einen HTTP 400-Fehler, wenn ich versuche, ein Zugriffstoken abzurufen. Was kann falsch sein?

A: Überprüfen Sie, ob Sie den Inhaltstyp in Ihrem Anforderungsheader auf application/x-www-form-urlencoded festgelegt haben.

F: Kann ich OAuth mit den SOAP-Endpunkten und REST-APIs verwenden?

A: Nein. OAuth wird derzeit nur in den REST-APIs unterstützt.

F: Wie kann ich mit Azure DevOps REST-APIs Anlagendetails für mein Arbeitselement abrufen?

A: Abrufen der Arbeitselementdetails mit Arbeitselementen – Abrufen der Arbeitselement-REST-API:

GET https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/{id}

Um die Details der Anlagen abzurufen, müssen Sie der URL den folgenden Parameter hinzufügen:

$expand=all

Mit den Ergebnissen erhalten Sie die Beziehungseigenschaft. Dort finden Sie die URL der Anlagen, und in der URL finden Sie die ID. Beispiel:

$url = https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/434?$expand=all&api-version=5.0

$workItem = Invoke-RestMethod -Uri $url -Method Get -ContentType application/json

$split = ($workitem.relations.url).Split('/')

$attachmentId = $split[$split.count - 1]

# Result: 1244nhsfs-ff3f-25gg-j64t-fahs23vfs