Implementieren von OAuth in Ihrer Marketplace-App

Letzte Aktualisierung: Januar 2014

 

DataMarket-Logo

Dieses Thema trug ursprünglich den Titel "Verwenden von OAuth in Ihrer DataMarket-Anwendung".

Entwickler können ihre Anwendungen in Marketplace erstellen und vermarkten. Diese Anwendungen können Marketplace-Daten nutzen. In diesem Fall muss der Benutzer das Dataset abonnieren, sonst können keine Daten von einer externen Quelle verwendet werden.

 

Abschnitt Beschreibung

Datenflüsse der Benutzerzustimmung

Beschreibt die Prozesse, durch die der Benutzer die Zustimmung gibt oder verweigert, dass eine Anwendung auf geschützte Ressourcen in Marketplace zugreift.

Zustimmungsdatenfluss für ASP.NET-Webanwendungen mit der WIF-Erweiterung (Windows Identity Foundation) für OAuth

Beschreibt, wie die Zustimmung von einem Benutzer in einer ASP.NET-Anwendung abgerufen wird, in der Marketplace OAuth verwendet. Codebeispiele werden zur Verfügung gestellt.

Zustimmungsdatenfluss für Webanwendungen

Beschreibt, wie die Zustimmung von einem Benutzer in einer beliebigen Webanwendung abgerufen wird, in der Marketplace OAuth verwendet. Codebeispiele werden zur Verfügung gestellt.

Authentifizierung bei Marketplace-Diensten mithilfe von OAuth

Beschreibt, wie auf Marketplace-Dienste im Auftrag eines Benutzers zugegriffen wird, wenn OAuth verwendet wird.

Verwenden des Aktualisierungstokens zum Abrufen eines neuen OAuth-Zugriffstokens

Beschreibt, wie der Tokenablauf durch Abrufen eines neuen OAuth-Zugriffstokens mithilfe des Aktualisierungstokens verarbeitet wird.

Typen von Berechtigungsanforderungen

Beschreibt die verschiedenen Arten von Berechtigungsanforderungen, die für den Zugriff auf Marketplace-Dienste verwendet werden können.

Registrieren einer Anwendung

Exemplarische Vorgehensweise für das Registrieren einer Anwendung, die OAuth mit Marketplace verwendet.

Anhang

Tabellen der Parameter, "x_permissions"- und "x_required_offers"-Matrix und Fehlermeldungen.

Bevor eine Anwendung auf Marketplace im Auftrag eines Benutzers zugreift, muss dieser Benutzer zustimmen, dass die Anwendung auf sein Konto und seine Abonnements zugreifen darf. Der Vorgang, durch den ein Benutzer diese Zustimmung erteilt, ist der OAuth-Datenfluss der Benutzerzustimmung.

Der Zustimmungsdatenfluss kann abhängig vom Status des Kontos des Benutzers und den von Ihrer Anwendung angeforderten Zustimmungsoptionen verschiedene Schritte umfassen.

Wenn der Benutzer seine Zustimmung erfolgreich erteilt, kann Ihre Anwendung ein Zugriffstoken abrufen, das dann für die Authentifizierung mit den Marketplace-Diensten im Auftrag des Benutzers verwendet wird.

In den folgenden Unterabschnitten wird die Integration des Oauth-Zustimmungsdatenflusses in Ihre Anwendung abhängig von Ihrer Architektur beschrieben.

Durch Windows Identity Foundation OAuth wird die Integration in Marketplace mithilfe von OAuth ganz einfach. Die Bibliothek implementiert das OAuth2.0-Protokoll und stellt einfache Methoden zum Verwalten des Datenflusses der Benutzerzustimmung zur Verfügung.

noteHinweis
Die WIF-Erweiterung (Windows Identity Foundation) für OAuth ist ein CTP (Community Technology Preview) und wird von Microsoft nicht unterstützt.

  • Herunterladen und Installieren des Windows Identity Foundation-Laufzeitmoduls.



  • Hinzufügen eines Verweises in Ihrem Projekt auf die folgenden beiden Assemblys:

    • Microsoft.IdentityModel.Protocols.OAuth
      Diese Assembly befindet sich in dem Zielverzeichnis, in das Sie die WIF-Erweiterung (Windows Identity Foundation) für OAuth entzippt haben.

    • System.IdentityModel
      Diese Assembly befindet sich in Ihrem Installationsverzeichnis für das .NET-Laufzeitmodul.

Sie können den Zustimmungsdatenfluss durch Aufrufen der statischen Methode RedirectToEndUserEndpoint() für die Klasse OAuthClient einleiten. Dies bewirkt, dass die aktuelle HTTP-Anforderung mit einer HTTP 302-Umleitung an den Marketplace-Zustimmungsdatenfluss antwortet.

Der dritte Parameter im folgenden Codebeispiel ist die URL, an die der Browser des Benutzers umgeleitet wird, nachdem der Zustimmungsdatenfluss abgeschlossen ist. Diese muss mit dem Umleitungs-URI übereinstimmen, den Sie beim Registrieren Ihrer Anwendung bei Marketplace bereitgestellt haben.


OAuthClient.RedirectToEndUserEndpoint(
              "https://datamarket.azure.com",
              AuthorizationResponseType.Code,
              "http://myapp.com/authcomplete");

Wenn der Benutzer den Zustimmungsdatenfluss abgeschlossen hat oder ein Fehler auftritt, wird der Browser des Benutzers zurück an Ihre Anwendung unter dem zuvor bereitgestellten URI umgeleitet. Die WIF-Erweiterung für OAuth empfängt und verarbeitet diese Umleitung und ruft einen Ereignishandler auf, den Sie registrieren.

Damit die WIF-Erweiterung für OAuth für die Verarbeitung der Umleitung aktiviert wird, müssen Sie den Ereignishandler der Clientbibliothek registrieren, indem Sie die Datei Web.config Ihrer ASP.NET-Anwendung erstellen oder ihr Folgendes hinzufügen.


<system.webServer>
   <handlers>
      <add name="DataMarketOAuthHandler" 
           verb="*" 
           path="DataMarketOAuthHandler.ashx"
           type="Microsoft.IdentityModel.Protocols.OAuth.Client.EndUserAuthorizationResponseHandler, 
                 Microsoft.IdentityModel.Protocols.OAuth" />
   </handlers>
</system.webServer>

Für das Name- und das Pfadattribut können Sie eigene Werte auswählen. Die absolute URL besteht aus der Basis-URL Ihrer Anwendung, die mit dem Pfadattribut für die Methode OAuthClient.RedirectToEndUserEndpoint() verkettet wird. Diese absolute URL muss mit der URL übereinstimmen, die Sie beim Registrieren Ihrer Anwendung bei Marketplace bereitgestellt haben.

Im zweiten Schritt müssen Sie Ereignishandler zum Empfangen der OAuth 2.0-Zugriffs- und Aktualisierungstoken oder zum Behandeln eines Fehlers des Zustimmungsdatenflusses implementieren. Die Methoden, die Sie implementieren, müssen mit den folgenden Signaturen übereinstimmen.


public void OAuthClientSettings.AccessTokenReceived(
                      object Sender,
                      AccessTokenReceivedEventArgs tokenReceivedEventArgs);
Void OAuthClientSettings.EndUserAuthorizationFailed(
                      object Sender,
                      EndUserAuthorizationFailedEventArgs authorizationFailedEventArgs);

Im Ereignishandler AccessTokenReceived rufen Sie das Zugriffstoken unter tokenReceivedEventArgs.AuthorizationResponse.Parameters[OAuthConstants.AccessToken] und das Aktualisierungstoken unter tokenReceivedEventArgs.AuthorizationResonse.Parameters[OAuthConstants.RefreshToken] ab.

Fügen Sie Ihrer Anwendung den folgenden Code hinzu, um die WIF-Erweiterung für OAuth mit den Marketplace OAuth-Einstellungen zu konfigurieren. Sie können diesen Code der Methode Application_Start für die ASP.NET-Klasse HttpApplication hinzufügen.

Ersetzen Sie im Codebeispiel unten die Platzhalter durch die Werte für die Client-ID und das Clientgeheimnis, die Sie beim Registrieren Ihrer Anwendung abgerufen haben. Ersetzen Sie AccessTokenReceived und EndUserAuthorizationFailed durch die Namen Ihrer Ereignishandler (wie im Abschnitt oben beschrieben).


// set up the ServerRegistry
InMemoryAuthorizationServerRegistery serverRegistry = 
               new InMemoryAuthorizationServerRegistry(); 
AuthorizationsServerRegistration registrationInfo = 
               new AuthorizationServerRegistration(                                   "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13",
                                   "https://datamarket.azure.com/embedded/consent", 
                                   <<Your OAuth Client ID>>, 
                                   <<Your OAuth Client Secret>>>);
serverRegistry.AddOrUpdate(registrationInfo);
OAuthClientSettings.AuthorizationServerRegistry = serverRegistry; 
// set up the ResourceRegistry 
InMemoryResourceScopeMappingRegistry resourceRegistry = 
               new InMemoryResourceScopeMappingRegistry(); 
resourceRegistry.AddOrUpdate(
                             "https://datamarket.azure.com/embedded/consent", 
                             "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13”, 
                             "https://datamarket.azure.com/embedded/consent", 
                             new string[] { "" }); 
OAuthClientSettings.ResourceScopeMappingRegistry = resourceRegistry; 
// handle the token received event 
OAuthClientSettings.AccessTokenreceived += 
                       new EventHandler<AccessTokenReceivedEventArgs>(OAuthClientSettings_AccessTokenReceived);  
// handle the event when the user denies consent 
OAuthClientSettings.EndUerAuthorizationFailed += 
                       new EventHandler<EndUserAuthorizationFailedEventArgs>(OAuthClientSettings_EndUserAuthorizaitonFailed);  
// register the Authentication Module
AuthenticationManager.Register(new OAuthAuthenticationModule());

In diesem Abschnitt wird die Integration Ihrer Webanwendung in den Marketplace OAuth 2.0-Zustimmungsdatenfluss beschrieben. Wenn Ihre Webanwendung mithilfe von ASP.NET implementiert wird, sollten Sie in Betracht ziehen, die WIF-Erweiterung für OAuth wie im vorherigen Abschnitt beschrieben zu verwenden.

Eine Webanwendung leitet den Zustimmungsdatenfluss ein, indem der Browser des Benutzers an die Zustimmungs-URL von Marketplace umgeleitet wird. Der Benutzer führt dann die einzelnen Schritte des Zustimmungsdatenflusses in seinem Browserfenster aus. Nach Abschluss dieses Vorgangs wird der Browser des Benutzers von Marketplace an die Umleitungs-URL Ihrer Anwendung nach der Zustimmung umgeleitet.

Sie leiten den Zustimmungsdatenfluss ein, indem Sie den Browser des Benutzers an die Zustimmungs-URL von Marketplace umleiten. Diese URL wird aus der Basis-URL und Abfragezeichenfolge-Parametern generiert.

Die Basis-URL lautet https://datamarket.azure.com/embedded/consent.

Die Zustimmungsdatenfluss-URL unterstützt die folgenden Abfragezeichenfolge-Parameter.

 

Parameter Erforderlich/Optional Beschreibung

client_id

Erforderlich

Die Client-ID, die Sie bei Marketplace registriert haben.

redirect_uri

Optional

Der URI, an den der Browser des Benutzers umgeleitet wird, sobald der Zustimmungsdatenfluss abgeschlossen ist.

Wenn dieser Wert zur Verfügung gestellt wird, überprüft das System, ob dieser Parameter mit dem Umleitungs-URI übereinstimmt, der für diesen Client vorregistriert wurde. Eine Übereinstimmung liegt vor, wenn alle Komponenten des URIs mit Ausnahme der Abfragezeichenfolge identisch sind.

Dieser Parameterwert muss URL-codiert sein.

response_type

Erforderlich

Der Mechanismus, der zum Zurückgeben eines Zugriffstokens an die anfordernde Anwendung verwendet wird. Nur der Wert code wird unterstützt.

Bundesstaat

Optional

Sie können diesen Parameter verwenden, um beliebige Daten vom Anfang bis zum Ende des Zustimmungsdatenflusses zu übergeben. Alle Werte, die Sie für diesen Parameter verwenden, werden an den Bereichsabfragezeichenfolge-Parameter angefügt, wenn der Browser des Benutzers an den Umleitungs-URI umgeleitet wird, nachdem der Zustimmungsdatenfluss abgeschlossen ist.

x_permissions

Optional

Dieser Parameter bestimmt, über welche Berechtigungen Ihre Anwendung für das Azure Marketplace-Konto des Benutzers verfügt. Dieser Parameter kann das Wort "account" oder einen Angebotsbezeichner enthalten. Wenn der Wert "account" lautet, besitzt Ihre Anwendung Zugriff auf das gesamte Azure Marketplace-Konto des Benutzers. Dies schließt alle aktuellen und zukünftigen Abonnements ein. Wird ein Angebotsbezeichner angegeben, besitzt Ihre Anwendung nur Zugriff auf Abonnements des angegebenen Angebots.

Angebotsbezeichner können als durch Leerzeichen getrennte Liste angegeben werden. Jeder Angebotsbezeichner entspricht den Anbieter- und Angebotsnamen aus der Stamm-URL des Diensts auf der Dataset-Detailseite des betreffenden Angebots. Wenn Sie beispielsweise Zugriff auf das Kriminalstatistik-Dataset Data.gov anfordern möchten, erstellen Sie den Parameter x_permissions wie folgt:

  1. Suchen Sie auf der Dataset-Detailseite nach dem Angebot.

  2. Suchen Sie nach der Stamm-URL des Diensts auf der Registerkarte Details. Für dieses Angebot handelt es sich um https://api.datamarket.azure.com/data.gov/Crimes/.

  3. Erstellen Sie den Angebotsbezeichner, indem Sie die Anbieter- und Angebotskomponenten der URL verwenden. Für dieses Angebot handelt es sich um data.gov/Crimes.

  4. Legen Sie x_permissions=data.gov/Crimes fest.

Wenn mindestens ein Angebotsbezeichner angegeben wird, ist der Gültigkeitsbereich für beliebige Zugriffstoken aus dieser Zustimmungserteilung nur der Zugriff auf die angegebenen Angebote.

Wenn account angegeben wird, erteilen alle Zugriffstoken aus dieser Zustimmungserteilung allen Benutzern Zugriff auf alle aktuellen und zukünftigen Angebote.

x_required_offers

Optional

Dieser Parameter erfordert, dass der Benutzer über ein Abonnement des angegebenen Angebots verfügt. Wenn der Benutzer noch kein aktives Abonnement besitzt, wird er aufgefordert, als Teil des Zustimmungsdatenflusses ein Abonnement abzuschließen.

Der Angebotsbezeichner, der in diesem Parameter verwendet wird, besitzt das gleiche Format wie im Parameter x_permissions oben definiert.

Wenn dieser Parameter angegeben wird, wird x_permissions automatisch auf den gleichen Angebotsbezeichner festgelegt und kann nicht für die Abfragezeichenfolge festgelegt werden.

x_scope

Optional

Die als URL codierte Form des Endpunkts, der den Datendienst hostet, auf den Sie zugreifen möchten. Wenn dieser Parameter ausgelassen wird, wird der Standardwert https://api.datamarket.azure.com/ verwendet.

Wenn Sie z. B. unter https://api.datamarket.azure.com/data.gov/crimes auf den Datendienst zugreifen, lautet der Bereichswert https://api.datamarket.azure.com/.

Wenn Sie unter http://api.microsofttranslator.com auf den Datendienst zugreifen, lautet der Bereichswert analog dazu http://api.microsofttranslator.com/.

Die folgende Zustimmungs-URL fordert z. B. Zugriff auf das gesamte Konto eines Benutzers an.

Die Zeilenumbrüche dienen nur der Lesbarkeit und sollten nicht in Ihrem Code enthalten sein.


https://datamarket.azure.com/embedded/consent?
client_id=myapp&
response_type=code&
x_permissions=account

Die folgende Zustimmungs-URL fordert z. B. Zugriff auf das gesamte Konto eines Benutzers an und verlangt, dass ein aktives Abonnement des Kriminalstatistik-Datasets Data.gov vorhanden ist.

Die Zeilenumbrüche dienen nur der Lesbarkeit und sollten nicht in Ihrem Code enthalten sein.


https://datamarket.azure.com/embedded/consent?
client_id=myapp&
response_type=code&
x_required_offers=data.gov/Crimes

Für das Beispiel unten ist es erforderlich, dass der Benutzer über ein aktives Abonnement für das Microsoft Translator-Abonnement verfügt und der Zugriff auf den SOAP-Endpunkt unter http://api.microsofttranslator.com/V2/Soap.svc zulässig ist.

Die Zeilenumbrüche dienen nur der Lesbarkeit und sollten nicht in Ihrem Code enthalten sein.


https://datamarket.azure.com/embedded/consent?
client_id=myapp&
response_type=code&
x_required_offers= Bing/MicrosoftTranslator&
x_scope=http%3a%2f%2fapi.microsofttranslator.com%2f
0

Nachdem Ihre Anwendung eine Marketplace-Zustimmungs-URL generiert hat, können Sie den Browser des Benutzers an diese URL umleiten – über eine HTTP 302-Umleitung oder durch Öffnen eines neuen Browserfensters, das an diese URL umgeleitet wird.

Wenn der Benutzer den Zustimmungsdatenfluss abgeschlossen hat oder ein Fehler auftritt, wird der Browser des Benutzers zurück an die Umleitungs-URL Ihrer Anwendung nach der Zustimmung umgeleitet.

Wenn der Zustimmungsdatenfluss erfolgreich war, weist die Umleitungs-URL nach der Zustimmung einen Abfragezeichenfolge-Parameter namens code auf, der den von Marketplace zurückgegebenen Autorisierungscode enthält. Sie diesen Code gegen ein Zugriffstoken und ein Aktualisierungstoken tauschen, die für die Authentifizierung mit den Marketplace-Diensten verwendet werden.

Wenn der Zustimmungsdatenfluss nicht erfolgreich war, enthält die Umleitungs-URL nach der Zustimmung die folgenden Abfragezeichenfolge-Parameter.

 

Parameter Beschreibung

Fehler

Ein einzelner Fehlercode aus den folgenden Parametern:

  • invalid_request
    Der Anforderung fehlt ein erforderlicher Parameter, sie enthält einen nicht unterstützten Parameter oder Parameterwert, oder sie ist auf andere Weise ungültig.

  • unauthorized_client
    Der Client ist nicht autorisiert, einen Autorisierungscode mithilfe dieser Methode anzufordern.

  • access_denied
    Der Ressourcenbesitzer oder Autorisierungsserver hat die Anforderung verweigert.

  • unsupported_response_type
    Der Autorisierungsserver unterstützt den Abruf eines Autorisierungscodes mithilfe dieser Methode nicht.

  • invalid_scope
    Der angeforderte Bereich ist ungültig, unbekannt oder weist Fehler auf.

error_description

Klartext, der weitere Informationen zur Verfügung stellt. Er unterstützt das Verständnis und die Auflösung des aufgetretenen Fehlers.

Bundesstaat

Wenn vorhanden, ist dies der Parameter state aus der ursprünglichen Zustimmungsanforderung. Er wird auf den genauen Wert festgelegt, der von der Anwendung empfangen wurde.

Sie tauschen den Autorisierungscode gegen ein Zugriffstoken und ein Aktualisierungstoken, indem Sie eine HTTP POST-Anforderung für den Marketplace OAuth 2.0-Tokenendpunkt (https://datamarket.accesscontrol.windows.net/v2/OAuth2-13) vornehmen.

Die Anforderung für diesen Endpunkt muss mehrere Parameter im Hauptteil der HTTP-Anforderung aufweisen. Der Hauptteil der Anforderung muss den Inhaltstyp application/x-www-form-urlencoded aufweisen.

 

Parameter Erforderlich/Optional Wert

client_id

Erforderlich

Die Client-ID Ihrer Anwendung, die Sie bei Marketplace registriert haben. Die client_id muss mit der Client-ID übereinstimmen, die an die Zustimmungs-URL von Marketplace zum einleiten des Zustimmungsdatenflusses übergeben wurde, und sie muss in URL-codierter Form vorliegen.

client_secret

Erforderlich

Das Clientgeheimnis Ihrer Anwendung, das Sie bei Marketplace registriert haben. Der client_secret muss URL-codiert sein.

code

Erforderlich

Der Autorisierungscode, den Sie von der Umleitungs-URL nach der Zustimmung empfangen haben. Der Autorisierungscode muss URL-codiert sein.

grant_type

Erforderlich

Dies muss der authorization_code sein.

redirect_uri

Erforderlich

Der Umleitungs-URI, den Sie beim Registrieren Ihrer Anwendung bereitgestellt haben. Der redirect_uri muss URL-codiert sein.

scope

Erforderlich

Die als URL codierte Form des Endpunkts, der den Datendienst hostet, auf den Sie zugreifen möchten. Dieser Wert muss mit dem Bereichswert übereinstimmen, den Sie beim Aufrufen des Zustimmungsdatenflusses bereitgestellt haben.

Wenn Sie z. B. unter https://api.datamarket.azure.com/data.gov/crimes auf den Datendienst zugreifen, lautet der Bereichswert https://api.datamarket.azure.com/.

Wenn Sie unter http://api.microsofttranslator.com auf den Datendienst zugreifen, lautet der Bereichswert analog dazu http://api.microsofttranslator.com/.

Ihre Anforderung an den Tokenendpunkt hinsichtlich des Austauschs eines Autorisierungscodes kann wie folgt aussehen.

noteHinweis
Die Zeilenumbrüche im Hauptteil der HTTP-Anforderung dienen nur der Lesbarkeit und sollten entfernt werden.


Post /v2/OAuth2-13 HTTP/1.1
Host: datamarket.accesscontrol.windows.net
Content-Type: application/x-www-form-urlencoded
code=1235486542&
client_id=myapp&
client_secret=MzX8SVXpgjOQWODwZfqiUGfp0FvGPZ&
redirect_uri=https%3a%2f%2fmyapp.com%2fauthcomplete&
grant_type=authorization_code&
scope=https%3a%2f%2fapi.datamarket.azure.com%2f

Zurückgegeben wird ein als JSON-Objekt codiertes Zugriffstoken.


HTTP/1.1 200 OK
Cache-Control: public, no-store, max-age=0
Content-Type: application/json; charset=us-ascii
Expires: Wed, 20 Apr 2011 18:48:53 GMT
Last-Modified: Wed, 20 Apr 2011 18:48:53 GMT
Vary: *
Server: Microsoft-IIS/7.0
Set-Cookie: ASP.NET_SessionId=chqpl445frmvsaeozn45bu55; path=/; HttpOnly
X-AspNetMvc-Version: 2.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Wed, 20 Apr 2011 18:48:53 GMT
Content-Length: 883
{"access_token":"http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=812d5dea-1111-43c0-b2af-38cbe4d58bf8&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fpermissions=10a6465f-b0a6-49ca-9175-b24caaf74db0&http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2009%2f09%2fidentity%2fclaims%2factor=myapp&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=DataMarketIdentityProvider&Audience=https%3a%2f%2fapi.datamarket.azure.com&ExpiresOn=1303325933&Issuer=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&HMACSHA256=YWSfH6Byumh7HqI4j7U8dsXFD88f42irvNVtGdG8zCY%3d",
"token_type":"http://schemas.xmlsoap.org/ws/2009/11/swt-token-profile-1.0",
"expires_in":"599",
"refresh_token":"uG/QvG8eKagO5NFM2XcnSQ==","scope":
"https://api.datamarket.azure.com/"}

Alle Marketplace-Dienste unterstützen nun OAuth als Authentifizierungsmethode. Wenn die Authentifizierung mithilfe von OAuth erfolgt, müssen Sie ein gültiges Zugriffstoken für die Anforderung als Teil des Autorisierungsheaders angeben. Der Wert des Autorisierungsheaders muss das be "Bearer " +-Zugriffstoken sein.

Das Beispiel unten zeigt eine Anforderung mit einem OAuth-Zugriffstoken.


GET /Data.ashx/WeatherBug/HistoricalObservations/HistHilo?$filter=Station_ID%20eq%20'46005' HTTP/1.1
Host: api.datamarket.azure.com
Connection: keep-alive
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=812d5dea-1111-43c0-b2af-38cbe4d58bf8&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fpermissions=10a6465f-b0a6-49ca-9175-b24caaf74db0&http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2009%2f09%2fidentity%2fclaims%2factor=myapp&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=DataMarketIdentityProvider&Audience=https%3a%2f%2fapi.datamarket.azure.com&ExpiresOn=1303325933&Issuer=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&HMACSHA256=YWSfH6Byumh7HqI4j7U8dsXFD88f42irvNVtGdG8zCY%3d
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16
Accept: application/atomsvc+xml;q=0.8, application/json;q=0.5, */*;q=0.1
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

Wenn Sie JSON/P-Funktionen verwenden, können Sie das Zugriffstoken auch in den Abfragezeichenfolgen-Parameter accessToken mit dem Präfix "Bearer " einschließen. Weitere Informationen zur JSON/P-Unterstützung finden Sie im Thema JSON/P support for Marketplace services.


<html>
<body>
<script type="text/javascript">
function ondataready(data) {
alert(data);
}
</script>
<script type="text/javascript" src="https://api.datamarket.azure.com/UnitedNations/Demographic/DataSeries?
$callback=ondataready&$format=json&accesstoken=Bearer%20http%253a%252f%252fschemas.xmlsoap.org%252fws
%252f2005%252f05%252fidentity%252fclaims%252fnameidentifier%3dbac9e6aa-3e22-4e05-87da-0525283708de%26http%253a%252f
%252fschemas.microsoft.com%252faccesscontrolservice%252f2010%252f07%252fclaims%252fpermissions%3daccount%26http%253a%252f
%252fschemas.xmlsoap.org%252fws%252f2009%252f09%252fidentity%252fclaims%252factor%3dembedded_demo%26http%253a%252f
%252fschemas.microsoft.com%252faccesscontrolservice%252f2010%252f07%252fclaims%252fidentityprovider
%3dDataMarketIdentityProvider%26Audience%3dhttps%253a%252f%252fapi.datamarket.azure.com%252f%26ExpiresOn
%3d1329153508%26Issuer%3dhttps%253a%252f%252fdatamarket.accesscontrol.windows.net%252f
%26HMACSHA256%3dcPBhxF7iLAy4mSQ98D8NYyrthl2QxqLu0aqHuxlCBOU%253d"></script>
</body>
</html>

Da Zugriffstoken nur 10 Minuten gültig sind, müssen Sie die Tokenaktualisierung einplanen, wenn Ihre Anwendung für einen längeren Zeitraum auf das Konto des Benutzers zugreift.

Einzelheiten zum Ausführen der Aktualisierung eines Zugriffstokens finden Sie in der OAuth 2.0-Spezifikation, Abschnitt 6. Beachten Sie, dass für die Aktualisierung der gleiche Tokenendpunkt wie zum Tauschen des Authentifizierungscodes gegen ein Zugriffstoken verwendet wird. Beachten Sie außerdem, dass Sie einen scope=https%3a%2f%2fapi.datamarket.azure.com%2f als Teil der Aktualisierungsanforderung bereitstellen müssen.

Das Beispiel unten zeigt eine Anforderung für ein neues Zugriffstoken.

noteHinweis
Die Zeilenumbrüche im Hauptteil der HTTP-Anforderung dienen nur der Lesbarkeit und sollten entfernt werden.


Post /v2/OAuth2-13 HTTP/1.1
Host: datamarket.accesscontrol.windows.net
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&
client_id=myapp&
client_secret=mysecret&
refresh_token=uG%2fQvG8eKagO5NFM2XcnSQ%3d%3d&
scope=https%3a%2f%2fapi.datamarket.azure.com%2f

Sobald sich der Benutzer an seinem Marketplace-Konto angemeldet hat, fordert die Anwendung ggf. Zugriff auf alle Datasets an, die der Benutzer abonniert hat, oder auf bestimmte Datasets. Wenn die Anwendung etwas anderes als kontoweiten Zugriff angibt, muss sie Autorisierung anfordern und ein Zugriffstoken für jedes Dataset abrufen, auf das zugegriffen werden muss. Der Parameter x_permissions in der HTTP-Anforderung gibt eine kontoweite Zugriffsanforderung oder eine Zugriffsanforderung für ein bestimmtes Dataset an.

  • Kontoweiter Zugriff

    Der Zugriff auf jedes vom Benutzer abonnierte Dataset wird durch Zuweisen des Werts account zum Parameter x_permissions angefordert, wenn die Umleitung an den Zustimmungsdatenfluss erfolgt.
    Beispiel: x_permissions=account

  • Zugriff auf ein bestimmtes Dataset

    Der Zugriff auf ein bestimmtes Dataset wird durch Zuweisen des relativen Pfades des Datasets zum Parameter x_permissions angefordert. Der relative Pfad ist der Bestandteil der Stamm-URL des Diensts, der den Datasetherausgeber und den Datasetnamen identifiziert. Wenn die Stamm-URL des Diensts z. B. https://datamarket.azure.com/data.ashx/contoso/sales lautet, lautet der relative Pfad contoso/sales.
    Beispiel: x_required_offers=contoso/sales

    So suchen Sie die Stamm-URL des Diensts

    1. Navigieren Sie im Browser zu Marketplace, und melden Sie sich dann an.

    2. Klicken Sie auf Meine Daten.

    3. Suchen Sie nach dem betreffenden Dataset (wenn es nicht aufgelistet wird, müssen Sie es abonnieren). Hilfestellung finden Sie unter Abonnieren eines Datenangebots.

    4. Klicken Sie auf der rechten Seite des Bildschirms auf Verwenden.

    5. Führen Sie einen Bildlauf nach unten aus, und klicken Sie dann auf die Registerkarte Details.

    6. Suchen Sie die Stamm-URL des Diensts im oberen Teil der Seite. Kopieren Sie diese, damit Sie sie später verwenden können.

  • Erforderlicher Datasetzugriff

    Anstatt die Berechtigungen für ein bestimmtes Dataset einzuschränken, kann eine Anwendung erfordern, dass ein Benutzer über ein bestimmtes Dataset verfügt. Auf diese Weise wird sichergestellt, dass der Zustimmungsdatenfluss erst erfolgreich abgeschlossen wird, wenn der Benutzer ein aktives Abonnement für ein Dataset besitzt. Wenn Sie diese Option verwenden möchten, stellen Sie einen Angebotsbezeichner im Parameter x_required_offers anstatt im Parameter x_permissions zur Verfügung.

Eine clientseitige Anforderung verwendet immer code als Anforderungstyp (request_type=code).

Wenn die Anwendung Zugriff auf alle vom Benutzer abonnierten Datasets anfordert (x_permissions=account), wird der Bildschirm für die ausdrückliche Berechtigungserteilung angezeigt, in dem der Benutzer auf Zugriff zulassen oder auf Abbrechen klickt.

Wenn die Anwendung ein bestimmtes Dataset (oder bestimmte Datasets) erfordert, kann der Benutzer diese ggf. alle abonnieren. Wenn der Benutzer über ein Abonnement für jedes erforderliche Dataset verfügt, wird der Bildschirm für die ausdrückliche Berechtigungserteilung angezeigt (siehe oben), in dem der Benutzer auf Zugriff zulassen oder auf Abbrechen klickt. Wenn Datasets erforderlich sind, die der Benutzer nicht abonniert hat, erhält er die Möglichkeit, diese zu abonnieren oder die Option Abbrechen zu wählen.

Die Anwendung gibt in der Anforderung ein bestimmtes Dataset an, indem an den Parameter x_permissions eine bestimmte Angebots-ID im Format DataOwner/Dataset übergeben wird.

Wenn die Anwendung ein bestimmtes Dataset (oder bestimmte Datasets) erfordert, kann der Benutzer diese ggf. alle abonnieren. Die Anwendung besitzt nur dann Zugriff auf ein Dataset, wenn der Benutzer ein vorhandenes Abonnement vorweisen kann (Ausnahme: wenn die Anwendung den Abfragezeichenfolge-Parameter x_required_offers verwendet).

Damit Ihre Anwendung einen Authentifizierungscode von Marketplace empfangen kann, muss sie zuvor bei Marketplace registriert worden sein. Wenn Sie eine Anwendung bei Marketplace registrieren, werden Ihnen eine Anwendungs-ID und ein -Geheimnis zugewiesen, die im Authentifizierungs- und Autorisierungsvorgang verwendet werden.

Anwendungsvorgang

  1. Melden Sie sich beim Marketplace an.

  2. Navigieren Sie im Browser zu https://datamarket.azure.com/developer/applications.

  3. Klicken Sie auf Erstellen.

  4. Geben Sie eine eindeutige ID für Ihre Anwendung ein.
    Beispiel: MyGreatApp10

    ImportantWichtig
    Die ID kann nur festgelegt werden, wenn Sie eine Registrierung erstellen. Sie kann nicht geändert werden, wenn Sie Ihre Registrierung zu einem späteren Zeitpunkt bearbeiten.

  5. Geben Sie den Namen Ihrer Anwendung ein.
    Beispiel: My Great Application v1.0

  6. Geben Sie den Umleitungs-URI der Anwendung nach der Zustimmung ein.

    Der Umleitungs-URI nach der Zustimmung ist die URL, an die der Browser des Benutzers weitergeleitet wird, nachdem der Zustimmungsdatenfluss abgeschlossen wurde.

  7. Klicken Sie auf Speichern.

Der OAuth-Endpunkt des Zustimmungsdatenflusses unterstützt die folgenden Abfragezeichenfolge-Parameter, die durch den Client festgelegt werden können.

 

Parameter Erforderlich/Optional Beschreibung

client_id

Erforderlich

Die Client-ID, die Sie bei Marketplace registriert haben.

redirect_uri

Optional

Wenn diese Werte zur Verfügung gestellt werden, überprüft das System, ob sie mit dem Umleitungs-URI übereinstimmen, der für diesen Client vorregistriert wurde. Wenn eine Übereinstimmung vorliegt, besitzen alle Elemente mit Ausnahme der Abfragezeichenfolge die gleiche kanonische Form.

Wenn diese Werte zur Verfügung gestellt werden, wird für diesen Wert standardmäßig der vorregistrierte URI verwendet.

response_type

Erforderlich

Marketplace unterstützt nur code.

x_permissions

Erforderlich

Wenn account angegeben wird, erteilen alle Zugriffstoken aus dieser Zustimmungserteilung allen Benutzern Zugriff auf alle aktuellen und zukünftigen Angebote. Wenn ein Angebotsbezeichner angegeben wird, ist der Gültigkeitsbereich für beliebige Zugriffstoken aus dieser Zustimmungserteilung nur der Zugriff auf das angegebene Angebot.

Wenn ein Angebotsbezeichner angegeben wird, ist der Gültigkeitsbereich für beliebige Zugriffstoken aus dieser Zustimmungserteilung nur der Zugriff auf das angegebene Angebot.

Bundesstaat

Optional

Ein nicht transparenter Wert, der zwischen der Anforderung und dem Rückruf übergeben wird.

x_required_offers

Optional

Eine Angebots-ID, die das gleiche Format wie der Parameter x_permissions verwendet.

Für SU2 ist die Liste auf ein Angebot eingeschränkt.

Wenn dieser Wert bereitgestellt wird, stellt das System sicher, dass das Konto über ein aktives Abonnement für alle Angebote in der Liste verfügt, bevor eine erfolgreiche Antwort zurückgegeben wird.

Das in dieser Liste enthaltene Angebot ist implizit im Parameter x_permissions enthalten, um den Bereich des Zugriffstokens zu ermitteln.

Optional kann an ein Angebot eine minimale Transaktionsanforderung angefügt werden. Wenn diese Angabe bereitgestellt wird, stellt das System sicher, dass das Konto eine Angebotsvariante mit einem monatlichen Grenzwert abonniert hat, der größer als der oder gleich dem in diesem Parameter angegebenen Wert ist.

Matrix der Angebots-ID und der Parameter x_required_offers. Vorliegen von Unterstützung und das sich ergebende Marketplace-Verhalten.

 

x_permissions x_required_offers Sich ergebendes Verhalten.

NULL

NULL

Fehler

Konto

NULL

Ausdrückliche Erteilung von Berechtigungen für das gesamte Konto.

Konto

Eine Angebots-ID.

Ausdrückliche Erteilung von Berechtigungen für das gesamte Konto und eingebetteter Kauf des Angebots.

Konto

Mehrere Angebots-IDs.

Fehler

Mindestens eine Angebots-ID.

NULL

Fehler

Gleiche Angebots-ID wie x_required_offers.

Eine Angebots-ID.

Eingebetteter Kauf des Angebots.
Nur Zugriff auf das erworbene Angebot.

Gleiche Angebots-ID wie x_required_offers.

Mehrere Angebots-IDs.

Fehler

NULL

Eine Angebots-ID.

Eingebetteter Kauf des Angebots.
Nur Zugriff auf das erworbene Angebot.

Fehlerbedingungen und -meldungen werden Benutzern angezeigt, wenn die Navigation zum Zustimmungsdatenfluss erfolgt.

 

Fehlerbedingung Message

Der Wert der Abfragezeichenfolge für "response_type" fehlt oder ist ein nicht unterstützter Wert.

<h1>Ungültige Anforderung</h1>
<p>Die von Ihnen verwendete Anwendung hat eine ungültige Anforderung an Marketplace gesendet. Wenden Sie sich an den Anwendungshersteller, um diesen Fehler zu melden.</p>
<p>Der Parameter<param/> fehlte oder war ein nicht unterstützter Wert.</p>

Der Wert der Abfragezeichenfolge für x_required_offers enthält Angebots-IDs, die nicht vorhanden sind.

<h1>Ungültige Anforderung</h1>
<p>Die von Ihnen verwendete Anwendung hat eine ungültige Anforderung an Marketplace gesendet. Wenden Sie sich an den Anwendungshersteller, um diesen Fehler zu melden.</p>
<p>Das Angebot ist nicht vorhanden: <BadOfferId/></p>

Der Wert der Abfragezeichenfolge für "client_id" ist ungültig (d. h., die "client_id" ist nicht bei Marketplace registriert).

<h1>Ungültige Anforderung</h1>
<p>Die von Ihnen verwendete Anwendung hat eine ungültige Anforderung an Marketplace gesendet. Wenden Sie sich an den Anwendungshersteller, um diesen Fehler zu melden.</p>
<p>Die Anwendung ist nicht registriert: <ClientId/></p>

Der Wert der Abfragezeichenfolge für "client_id" ist einer angehhaltenen Anwendung zugeordnet.

<h1>Ungültige Anforderung</h1>
<p>Die von Ihnen verwendete Anwendung hat eine ungültige Anforderung an Marketplace gesendet. Wenden Sie sich an den Anwendungshersteller, um diesen Fehler zu melden.</p>
<p>Die Anwendung ist angehalten: <ClientId/></p>

Zu viele Einträge "x_permissions" oder "x_required_offers".

<h1>Ungültige Anforderung</h1>
<p>Die von Ihnen verwendete Anwendung hat eine ungültige Anforderung an Marketplace gesendet. Wenden Sie sich an den Anwendungshersteller, um diesen Fehler zu melden.</p>
<p>Für "x_permissions" oder "x_required_offers" waren mehr als 50 IDs vorhanden.</p>

Siehe auch

Anzeigen: