Exporter (0) Imprimer
Développer tout

Implémentation d'OAuth dans une application du Marketplace

Mis à jour: janvier 2014

 

Logo DataMarket

Cette rubrique a été initialement publiée sous le titre « Utiliser OAuth dans votre application DataMarket ».

Les développeurs peuvent créer et commercialiser leurs applications sur le Marketplace. Ces applications peuvent consommer des données de Marketplace. Dans ce cas, l'utilisateur soit s'abonner au jeu de données, ou n'utiliser aucune donnée de source externe.

Sections de cette rubrique

 

Section Description

Flux de consentement d'utilisateur

Décrit les processus via lesquels l'utilisateur donne ou refuse son consentement permettant à une application d'accéder à des ressources protégées sur le Marketplace.

Flux de consentement pour applications web ASP.NET avec l'extension Windows Identity Foundation pour OAuth

Décrit comment obtenir un consentement à partir d'une utilisation dans une application ASP.NET avec Marketplace en utilisant OAuth. Des exemples de code sont fournis.

Flux de consentement pour les applications web

Décrit comment obtenir un consentement à partir d'un utilisateur dans toute application web avec Marketplace en utilisant OAuth. Des exemples de code sont fournis.

Authentification auprès des services Marketplace à l'aide d'OAuth

Décrit comment accéder aux services Marketplace au nom d'un utilisateur lors de l'utilisation d'OAuth.

Utilisation du jeton d'actualisation pour obtenir un nouveau jeton d'accès OAuth

Décrit comment gérer l'expiration du jeton en obtenant un nouveau jeton d'accès OAuth à l'aide du jeton d'actualisation.

Types de demandes d'autorisation

Décrit les différents types de demandes d'autorisations qui peuvent être utilisés pour accéder aux services Marketplace.

Inscription d'une application

Décrit comment inscrire une application qui utilise OAuth auprès du Marketplace.

Annexe

Tableaux Paramètres, Matrice des paramètres x_permissions et x_required_offers et messages d'erreur.

Flux de consentement d'utilisateur

Pour qu'une application puisse accéder au Marketplace pour au nom d'un utilisateur, celui-ci doit autoriser l'application à accéder à ses compte et abonnements. Le processus via lequel un utilisateur autorise un tel accès est le flux de consentement d'utilisateur d'OAuth.

Le flux de consentement peut comprendre différentes étapes, selon l'état du compte de l'utilisateur et les options de consentement que votre application demande.

Quand l'utilisateur donne correctement son consentement, votre application est en mesure d'obtenir un jeton d'accès qu'elle utilise pour s'authentifier auprès des services Marketplace au nom de l'utilisateur.

Les sous-sections ci-après décrivent comment intégrer le flux de consentement d'OAuth dans votre application en fonction de votre architecture.

Flux de consentement pour applications web ASP.NET avec l'extension Windows Identity Foundation pour OAuth

L'extension Windows Identity Foundation (WIF) pour OAuth facilite l'intégration avec Marketplace en utilisant OAuth. La bibliothèque implémente le protocole OAuth2.0 et expose des méthodes simples pour gérer le flux de consentement d'utilisateur.

noteRemarque
L'extension Windows Identity Foundation (WIF) pour OAuth est une version préliminaire CTP (Community Technology Preview) ne bénéficiant par du Support Microsoft.

Conditions préalables

  • Téléchargez et installez le Runtime de Windows Identity Foundation.

  • Téléchargez et installez l'Extension Windows Identity Foundation pour OAuth.

  • Ajoutez dans votre projet une référence aux deux assemblys suivants :

    • Microsoft.IdentityModel.Protocols.OAuth
      Cet assembly se trouve dans le répertoire cible où vous avez décompressé l'extension Windows Identity Foundation (WIF) pour OAuth.

    • System.IdentityModel
      Cet assembly se trouve dans votre répertoire d'installation du Runtime .NET.

Démarrage du flux de consentement

Vous pouvez démarrer le flux de consentement en appelant la méthode statique RedirectToEndUserEndpoint() sur la classe OAuthClient. Ainsi, la requête HTTP actuelle répond avec une redirection HTTP 302 vers le flux de consentement Marketplace.

Le troisième paramètre de l'exemple de code ci-dessous est l'URL vers laquelle le navigateur de l'utilisateur est redirigé une fois le flux de consentement terminé. Elle doit correspondre à l'URI de redirection fourni lors de l'enregistrement de votre application auprès de Marketplace.


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

Réception de la redirection après consentement

Quand l'utilisateur termine le flux de consentement ou si une erreur se produit, le navigateur de l'utilisateur est redirigé vers votre application à l'URI que vous avez fourni précédemment. L'extension WIF pour OAuth reçoit et traite cette redirection, puis appelle un gestionnaire d'événements que vous inscrivez.

Pour permettre à l'extension WIF pour OAuth de traiter la redirection, vous devez inscrire le gestionnaire de la bibliothèque cliente en créant ou en ajoutant ce qui suit au fichier Web.config de votre application ASP.NET.


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

Vous pouvez choisir vos propres valeurs pour les attributs de nom et de chemin d'accès. L'URL absolue se compose de l'URL de base de votre application, concaténée avec l'attribut de chemin d'accès pour la méthode OAuthClient.RedirectToEndUserEndpoint(). Cette URL absolue doit correspondre à celle que vous avez fournie lors de l'inscription de votre application auprès du Marketplace.

Ensuite, vous devez implémenter des gestionnaires d'événements pour recevoir les jetons d'accès et d'actualisation OAuth 2.0, ou gérer une erreur de flux de consentement. Les méthodes que vous implémentez doivent correspondre aux signatures suivantes.


public void OAuthClientSettings.AccessTokenReceived(
                      object Sender,
                      AccessTokenReceivedEventArgs tokenReceivedEventArgs);

Void OAuthClientSettings.EndUserAuthorizationFailed(
                      object Sender,
                      EndUserAuthorizationFailedEventArgs authorizationFailedEventArgs);

Dans le gestionnaire AccessTokenReceived, tokenReceivedEventArgs.AuthorizationResponse.Parameters[OAuthConstants.AccessToken] permet d'obtenir le jeton d'accès, et tokenReceivedEventArgs.AuthorizationResonse.Parameters[OAuthConstants.RefreshToken] le jeton d'actualisation.

Configuration de l'extension WIF pour OAuth

Ajoutez le code suivant à votre application pour configurer l'extension WIF pour OAuth avec les paramètres OAuth du Marketplace. Vous pouvez ajouter cela à la méthode Application_Start pour votre classe HttpApplication ASP.NET.

Dans le code ci-dessous, remplacez les espaces réservés par les valeurs d'ID Client et de clé secrète client obtenues lors de l'inscription de votre application. Remplacez AccessTokenReceived et EndUserAuthorizationFailed par les noms de vos gestionnaires d'événements, comme décrit dans la section ci-dessus.


// 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());

Flux de consentement pour les applications web

Cette section décrit comment intégrer votre application web avec le flux de consentement OAuth 2.0 du Marketplace. Si votre application web est implémentée à l'aide d'ASP.NET, vous devez envisager d'utiliser l'extension Windows Identity Foundation (WIF) pour OAuth de la manière décrite dans la section précédente.

Une application web démarre le flux de consentement en accédant via le navigateur de l'utilisateur à l'URL de consentement de Marketplace. L'utilisateur achève ensuite les étapes du flux de consentement dans la fenêtre de son navigateur. Une fois le flux de consentement terminé, Marketplace redirige le navigateur de l'utilisateur vers l'URL de redirection après consentement de votre application.

Démarrage du flux de consentement

Vous démarrez le flux de consentement en accédant via le navigateur de l'utilisateur à l'URL de consentement de Marketplace. Cette URL est générée à l'aide de l'URL de base et des paramètres de chaîne de requête.

L'URL de base est https://datamarket.azure.com/embedded/consent.

L'URL du flux de consentement prend en charge les paramètres de chaîne de requête suivants.

 

Paramètre Obligatoire/facultatif Description

client_id

Obligatoire

ID client que vous avez enregistré auprès du Marketplace.

redirect_uri

Facultatif

URI vers lequel le navigateur de l'utilisateur est redirigé une fois le flux de consentement terminé.

S'il est fourni, le système vérifie que ce paramètre correspond à l'URI de redirection pré-enregistré pour ce client. Ils correspondent si tous les composants de l'URI sont identiques, à l'exception de la chaîne de requête.

La valeur de ce paramètre doit être codée URL.

response_type

Obligatoire

Mécanisme utilisé pour renvoyer un jeton d'accès à l'application demandeuse. La seule valeur code est prise en charge.

state

Facultatif

Vous pouvez utiliser ce paramètre pour transmettre des données arbitraires du début à la fin du flux de consentement. Toute valeur incluse pour ce paramètre est ajoutée au paramètre de chaîne de requête d'étendue quand le navigateur de l'utilisateur est redirigé vers l'URI de redirection une fois le flux de consentement terminé.

x_permissions

Facultatif

Ce paramètre détermine les autorisations de votre application pour le compte Azure Marketplace de l'utilisateur. Ce paramètre peut contenir soit le compte professionnel, soit un identificateur d'offre. Avec un compte, votre application a accès à l'intégralité du compte Azure Marketplace de l'utilisateur, y compris à l'ensemble des abonnements actuels et futurs. Avec un identificateur d'offre, votre application a accès uniquement aux abonnements à l'offre spécifiée.

Les identificateurs d'offre peuvent être spécifiés sous la forme d'une liste délimitée par des espaces. Chaque identificateur d'offre correspond aux noms de fournisseur et d'offre de l'URL racine du service sur la page de détails du jeu de données de cette offre. Par exemple, pour demander l'accès au jeu de données Data.gov Crime, vous devez construire le paramètre x_permissions comme suit :

  1. Examinez la page de détails du jeu de données pour l'offre ici.

  2. Localisez l'URL racine du service sous l'onglet Détails. Pour cette offre, il s'agit de https://api.datamarket.azure.com/data.gov/Crimes/.

  3. Construisez l'identificateur d'offre en prenant les parties fournisseur et offre de l'URL. Pour cette offre, il s'agit de data.gov/Crimes.

  4. Définissez x_permissions=data.gov/Crimes.

Si des identificateurs d'offre sont spécifiés, les jetons d'accès de cet octroi de consentement sont limités à l'accès aux offres spécifiées.

Si account est spécifié, tous les jetons d'accès de ce consentement permettent d'accéder à toutes les offres actuelles et futures.

x_required_offers

Facultatif

Ce paramètre requiert que l'utilisateur dispose d'un abonnement à l'offre spécifiée. Si l'utilisateur n'a pas encore d'abonnement actif, il est invité à s'abonner dans le cadre du flux de consentement.

L'identificateur d'offre utilisé dans ce paramètre a le même format que ceux figurant dans le paramètre x_permissions défini ci-dessus.

Si ce paramètre est spécifié, le paramètre x_permissions est automatiquement défini sur le même identificateur d'offre, et ne peut pas être défini sur la chaîne de requête.

x_scope

Facultatif

Forme codée URL du point de terminaison qui héberge le service de données auquel vous devez accéder. En cas d'omission, la valeur par défaut est https://api.datamarket.azure.com/.

Par exemple, si vous accédez au service de données via https://api.datamarket.azure.com/data.gov/crimes, la valeur d'étendue est https://api.datamarket.azure.com/.

De même, si vous accédez au service de données via http://api.microsofttranslator.com, la valeur d'étendue est http://api.microsofttranslator.com/.

Par exemple, l'URL de consentement suivante demande l'accès à l'intégralité d'un compte d'utilisateur.

Les sauts de ligne sont uniquement destinés à améliorer la lisibilité, et ne doivent pas être inclus dans votre code.


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

Par exemple, l'URL de consentement suivante demande l'accès à l'intégralité d'un compte d'utilisateur, et nécessitent un abonnement actif au jeu de données Data.gov Crime.

Les sauts de ligne sont uniquement destinés à améliorer la lisibilité, et ne doivent pas être inclus dans votre code.


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

L'exemple suivant nécessite que l'utilisateur dispose d'un abonnement actif à l'abonnement Microsoft Translator, et autorise l'accès au point de terminaison SOAP via http://api.microsofttranslator.com/V2/Soap.svc.

Les sauts de ligne sont uniquement destinés à améliorer la lisibilité, et ne doivent pas être inclus dans votre code.


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

Une fois que votre application a construit une URL de consentement Marketplace, vous pouvez accéder à celle-ci à l'aide du navigateur de l'utilisateur, soit via une redirection HTTP 302, soit en ouvrant une nouvelle fenêtre de navigateur.

Réception de la redirection après consentement

Quand l'utilisateur termine le flux de consentement ou si une erreur se produit, le navigateur de l'utilisateur est redirigé vers l'URL de redirection après consentement de votre application.

Si le flux de consentement a réussi, l'URL de redirection après consentement comprend un code nommé de paramètre de chaîne de requête, qui contient le code d'autorisation renvoyé par le Marketplace. Vous pouvez échanger ce code contre un jeton d'accès et un jeton d'actualisation utilisables pour l'authentification auprès des services Marketplace.

Si le flux de consentement n'a pas réussi, l'URL de redirection après consentement contient les paramètres de chaîne de requête suivants.

 

Paramètre Description

error

Un des codes d'erreur suivants :

  • invalid_request
    La demande ne contient pas un paramètre obligatoire, inclut un paramètre ou une valeur de paramètre non pris en charge, ou présente une forme incorrecte.

  • unauthorized_client
    Le client n'est pas autorisé à demander un code d'autorisation à l'aide de cette méthode.

  • access_denied
    Le propriétaire de la ressource ou le serveur d'autorisation a refusé la demande.

  • unsupported_response_type
    Le serveur d'autorisation ne prend pas en charge l'obtention d'un code d'autorisation à l'aide de cette méthode.

  • invalid_scope
    L'étendue demandée est incorrecte, inconnue ou de forme incorrecte.

error_description

Texte contrôlable de visu fournissant des informations supplémentaires utilisées pour faciliter la compréhension et la résolution de l'erreur survenue.

state

Le cas échéant, il s'agit du paramètre « state » de la demande de consentement d'origine. Définie sur la valeur exacte reçue de l'application.

Échange du code d'autorisation contre un jeton d'accès et un jeton d'actualisation

Vous échangez le code d'autorisation contre un jeton d'accès et un jeton d'actualisation en adressant une requête HTTP POST au point de terminaison de jeton OAuth 2.0 Marketplace (https://datamarket.accesscontrol.windows.net/v2/OAuth2-13).

La demande adressée à ce point de terminaison doit comprendre plusieurs paramètres dans le corps de la requête HTTP. Le type de contenu du corps de la demande doit être application/x-www-form-urlencoded.

 

Paramètre Obligatoire/facultatif Valeur

client_id

Obligatoire

ID client de l'application que vous avez inscrite auprès du Marketplace. La valeur client_id doit correspondre à l'ID client transmis à l'URL de consentement Marketplace pour démarrer le flux de consentement, et doit présenter une forme codée URL.

client_secret

Obligatoire

Clé secrète client de l'application que vous avez inscrite auprès du Marketplace. La valeur client_secret doit présenter une forme codée URL.

code

Obligatoire

Code d'autorisation que vous avez reçu sur l'URL de redirection après consentement. La valeur code d'autorisation doit présenter une forme codée URL.

grant_type

Obligatoire

Doit être la valeur authorization_code.

redirect_uri

Obligatoire

URI de redirection fourni lors de l'inscription de votre application. La valeur redirect_uri doit présenter une forme codée URL.

scope

Obligatoire

Forme codée URL du point de terminaison qui héberge le service de données auquel vous devez accéder. Cette valeur doit correspondre à la valeur d'étendue que vous avez fournie lors de l'appel du flux de consentement.

Par exemple, si vous accédez au service de données via https://api.datamarket.azure.com/data.gov/crimes, la valeur d'étendue est https://api.datamarket.azure.com/.

De même, si vous accédez au service de données via http://api.microsofttranslator.com, la valeur d'étendue est http://api.microsofttranslator.com/.

La demande que vous adressez au point de terminaison de jeton pour échanger un code d'autorisation peut se présenter comme suit.

noteRemarque
Les sauts de ligne dans le corps de la requête HTTP sont uniquement destinés à améliorer la lisibilité, et doivent être supprimés.


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

Vous recevez un jeton d'accès codé dans un objet JSON.


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/"}

Authentification auprès des services Marketplace à l'aide d'OAuth

Tous les services Marketplace prennent désormais en charge OAuth comme méthode d'authentification. Lors de l'authentification à l'aide d'OAuth, vous devez fournir un jeton d'accès valide dans la demande sous la forme d'un en-tête Authorization. La valeur de l'en-tête Authorization doit être un jeton d'accès be "Bearer " +.

Voici un exemple de demande contenant un jeton d'accès OAuth.


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

Si vous utilisez des fonctionnalités JSON/P, vous pouvez également inclure le jeton d'accès dans le paramètre de chaîne de requête accessToken avec le préfixe « Bearer  ». Pour plus d'informations sur la prise en charge de JSON/P, consultez la rubrique 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>

Utilisation du jeton d'actualisation pour obtenir un nouveau jeton d'accès OAuth

Les jetons d'accès n'étant valides que pendant 10 minutes, si votre application doit pouvoir accéder au compte de l'utilisateur pendant une période plus longue, vous devez gérer l'actualisation du jeton.

Pour plus d'informations sur la façon d'actualiser un jeton d'accès, consultez la section 6 de la spécification OAuth 2.0. Notez que le point de terminaison de jeton utilisé pour l'actualisation est le même que celui utilisé pour échanger le code d'authentification contre un jeton d'accès. Notez également que vous devez fournir scope=https%3a%2f%2fapi.datamarket.azure.com%2f dans la demande d'actualisation.

Voici un exemple de demande de nouveau jeton d'accès.

noteRemarque
Les sauts de ligne dans le corps de la requête HTTP sont uniquement destinés à améliorer la lisibilité, et doivent être supprimés.


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

Types de demandes d'autorisation

Une fois l'utilisateur connecté à son compte Marketplace, l'application peut demander l'accès à tous les jeux de données auxquels l'utilisateur s'abonne, ou à des jeux de données spécifiques. Si l'application ne spécifie pas un accès à l'intégralité du compte, elle doit demander une autorisation afin d'obtenir un jeton accès pour chaque jeu de données auquel elle doit accéder. Le paramètre x_permissions dans la requête HTTP désigne soit une demande d'accès à l'intégralité du compte, soit une demande d'accès à un jeu de données spécifique.

  • Accès à l'intégralité du compte

    L'accès à l'ensemble des jeux de données auxquels l'utilisateur s'abonne est demandé en affectant la valeur account au paramètre x_permissions lors de la redirection vers le flux de consentement.
    Exemple : x_permissions=account

  • Accès à un jeu de données spécifique

    L'accès à un jeu de données particulier est demandé en affectant le chemin d'accès relatif du jeu de données au paramètre x_permissions. Le chemin d'accès relatif est la partie de l'URL racine du service qui identifie l'éditeur du jeu de données et le nom de ce dernier. Par exemple, si l'URL racine du service est https://datamarket.azure.com/data.ashx/contoso/sales, le chemin d'accès relatif est contoso/sales.
    Exemple : x_required_offers=contoso/sales

    Pour identifier l'URL racine du service

    1. Dans le navigateur, accédez au Marketplace, puis connectez-vous.

    2. Cliquez sur Mes données.

    3. Recherchez le jeu de données qui vous intéresse (s'il n'est pas répertorié, vous devez vous y abonner). Pour obtenir des instructions, consultez Abonnement à une offre de données.

    4. Cliquez sur Utiliser du côté droit de l'écran.

    5. Faites défiler et cliquez sur l'onglet Détails.

    6. Recherchez l'URL racine du service près du haut de la page. Copiez-la en vue d'une utilisation ultérieure.

  • Accès au jeu de données requis

    Au lieu de limiter les autorisations à un jeu de données spécifique, une application peut exiger qu'un utilisateur ait un jeu de données particulier. Cela garantit que le flux de consentement n'aboutisse pas, sauf si l'utilisateur dispose d'un abonnement actif à un jeu de données. Pour utiliser cette option, fournissez un identificateur d'offre dans le paramètre x_required_offers et non dans le paramètre x_permissions.

Une demande côté client utilise toujours le type de demande code (request_type=code).

Accès à l'intégralité du compte

Si l'application demande l'accès à tous les jeux de données auxquels l'utilisateur s'abonne (x_permissions=account), l'écran d'octroi explicite s'affiche, dans lequel l'utilisateur clique sur Autoriser l'accès ou sur Annuler.

Si l'application nécessite un ou plusieurs jeux de données spécifiques, l'utilisateur peut décider de s'abonner ou non à l'ensemble de ceux-ci. Si l'utilisateur dispose d'un abonnement à chaque jeu de données requis, l'écran d'octroi explicite (voir ci-dessus) s'affiche, dans lequel l'utilisateur peut cliquer sur Autoriser l'accès ou sur Annuler. S'il existe des jeux de données requis auxquels l'utilisateur n'est pas abonné, celui-ci a la possibilité de s'y abonner ou d'Annuler.

Accéder à un ou plusieurs jeux de données spécifiques

L'application spécifie un jeu de données particulier dans la demande en attribuant au paramètre x_permissions un ID d'offre spécifique au format DataOwner/Dataset.

Si l'application nécessite un ou plusieurs jeux de données spécifiques, l'utilisateur peut décider de s'abonner ou non à l'ensemble de ceux-ci. L'application n'accède à un jeu de données que si un utilisateur dispose d'un abonnement existant (à moins que l'application utilise le paramètre de chaîne de requête x_required_offers).

Inscription d'une application

Pour que votre application reçoive un code d'authentification du Marketplace, elle doit être enregistrée auprès de celui-ci. Lorsque vous inscrivez votre application auprès du Marketplace, vous recevez un ID d'application et une clé secrète qui sont utilisés dans le processus d'authentification et d'autorisation.

Processus d'application

  1. Connectez-vous au Marketplace.

  2. À l'aide du navigateur, accédez à https://datamarket.azure.com/developer/applications.

  3. Cliquez sur Créer.

  4. Entrez un ID unique pour votre application.
    Exemple : MyGreatApp10

    ImportantImportant
    Vous ne pouvez définir l'ID qu'au moment de la création d'une inscription, et ne pourrez pas le changer si vous modifiez celle-ci ultérieurement.

  5. Entrez le nom de votre application.
    Exemple : Ma Super Application v1.0

  6. Entrez l'URI de redirection après consentement de l'application.

    L'URI de redirection après consentement de l'application est l'URL vers laquelle vous souhaitez que le navigateur de l'utilisateur soit redirigé une fois le flux de consentement correctement accompli.

  7. Cliquez sur Enregistrer.

Annexe

Paramètres

Le point de terminaison du flux de consentement d'OAuth prend en charge les paramètres de chaîne de requête définissables par le client suivants.

 

Paramètre Obligatoire/facultatif Description

client_id

Obligatoire

ID client que vous avez enregistré auprès du Marketplace.

redirect_uri

Facultatif

Si ce paramètre est fourni, le système vérifie qu'il correspond à l'URI de redirection pré-enregistré pour ce client. S'il correspond, tous les éléments, à l'exception de la chaîne de requête, présentent la même forme canonique.

S'il est omis, par défaut, cette valeur est l'URI pré-enregistré.

response_type

Obligatoire

Le Marketplace prend uniquement en charge code.

x_permissions

Obligatoire

Si account est spécifié, tous les jetons d'accès de ce consentement permettent d'accéder à toutes les offres actuelles et futures. Si un identificateur d'offre est spécifié, tout jeton d'accès de cet octroi de consentement est limité à l'accès à l'offre spécifiée.

Si un identificateur d'offre est spécifié, tout jeton d'accès de cet octroi de consentement est limité à l'accès à l'offre spécifiée.

state

Facultatif

Valeur opaque échangée entre la demande et le rappel.

x_required_offers

Facultatif

ID d'offre au même format que le paramètre x_permissions.

Pour SU2, la liste est limitée à une seule offre.

Si ce paramètre est spécifié, avant de renvoyer une réponse correcte, le système vérifie que le compte dispose d'un abonnement actif à toutes les offres de la liste.

L'offre incluse dans cette liste est implicitement incluse dans le paramètre x_permissions pour déterminer l'étendue du jeton d'accès.

Une offre peut également être ajoutée moyennant une transaction minimale. Si ce paramètre est spécifié, le système vérifie que le compte est abonné à une variante d'offre, la limite mensuelle étant égale ou supérieure au nombre spécifié dans ce paramètre.

Matrice des paramètres x_permissions et x_required_offers

Matrice des paramètres x_permissions et x_required_offers de l'ID d'offre. Indique s'ils sont pris en charge et le comportement de Marketplace qui en résulte.

 

x_permissions x_required_offers Comportement induit

Null

Null

Erreur

compte

Null

Octroi explicite pour l'intégralité du compte.

compte

ID d'une offre

Octroi explicite pour l'intégralité du compte et l'achat incorporé pour l'offre.

compte

Plusieurs ID d'offre

Erreur

Un ou plusieurs ID d'offre

Null

Erreur

Même ID d'offre que x_required_offers

ID d'une offre

Achat incorporé pour l'offre.
Accès uniquement à l'offre achetée.

Même ID d'offre que x_required_offers

Plusieurs ID d'offre

Erreur

Null

ID d'une offre

Achat incorporé pour l'offre.
Accès uniquement à l'offre achetée.

messages d'erreur

Conditions d'erreur et messages affichés à l'utilisateur lors de la navigation vers le flux de consentement.

 

Condition d'erreur Message

La valeur de chaîne de requête pour response_type est manquante ou n'est pas prise en charge.

<h1>Bad Request</h1>
<p>The application you are using sent a bad request to the Marketplace. Contact your application vendor to report this error.</p>
<p>Parameter <param/> was missing or was an unsupported value.</p>

La valeur de chaîne de requête pour le paramètre x_required_offers contient des identificateurs d'offre qui n'existent pas.

<h1>Bad Request</h1>
<p>The application you are using sent a bad request to the Marketplace. Contact your application vendor to report this error.</p>
<p>Offer does not exist: <BadOfferId/></p>

La valeur de chaîne de requête pour le paramètre client_id n'est pas valide (autrement dit, le paramètre client_id n'est pas inscrit auprès de Marketplace).

<h1>Bad Request</h1>
<p>The application you are using sent a bad request to the Marketplace. Contact your application vendor to report this error.</p>
<p>Application not registered: <ClientId/></p>

La valeur de chaîne de requête pour le paramètre client_id mappe à une application suspendue.

<h1>Bad Request</h1>
<p>The application you are using sent a bad request to the Marketplace. Contact your application vendor to report this error.</p>
<p>Application is suspended: <ClientId/></p>

Les entrées x_permissions ou x_required_offers sont trop nombreuses.

<h1>Bad Request</h1>
<p>The application you are using sent a bad request to the Marketplace. Contact your application vendor to report this error.</p>
<p>More than 50 identifiers were present for x_permissions or x_required_offers.</p>

Voir aussi

Afficher:
© 2015 Microsoft