Délégation de l'inscription des utilisateurs et des abonnements aux produits

S’APPLIQUE À : Développeur | De base | Standard | Premium

La délégation permet à votre site web de conserver les données utilisateur et d’effectuer une validation personnalisée. Avec la délégation, vous pouvez gérer la connexion/inscription des développeurs (et les opérations de gestion de compte liées) et l’abonnement aux produits en utilisant votre site web existant, au lieu de la fonctionnalité intégrée du portail pour développeurs.

Délégation de la connexion et de l’inscription des développeurs

Pour déléguer la connexion et l’inscription des développeurs et les options de gestion de compte des développeurs à votre site web existant, créez un point de terminaison de délégation spécifique sur votre site. Cette délégation spéciale fait office de point d’entrée pour toute requête de connexion/inscription et autres requêtes liées lancées à partir du portail des développeurs Gestion des API.

Workflow final :

  1. Le développeur clique sur le lien de connexion ou d’inscription, ou de gestion de compte, sur le portail des développeurs Gestion des API.
  2. Le navigateur redirige vers le point de terminaison de délégation.
  3. Le point de terminaison de délégation, en retour, redirige l’utilisateur vers ou présente à l’utilisateur l’interface utilisateur de connexion/inscription ou de gestion de compte.
  4. Une fois l’opération terminée, l’utilisateur est redirigé vers le portail des développeurs Gestion des API à l’emplacement qu’il a quitté.

Configurer Gestion des API pour acheminer les demandes via le point de terminaison de délégation

  1. Dans le Portail Azure, recherchez Portail des développeurs dans votre ressource Gestion des API.

  2. Cliquez sur l’élément Délégation.

  3. Cochez la case pour activer Déléguer la connexion et l’inscription.

    Capture d’écran montrant la délégation de connexion et d’inscription dans le portail.

  4. Déterminez l’URL de votre point de terminaison de délégation spécial, puis entrez-la dans le champ URL du point de terminaison de délégation.

  5. Dans le champ Clé de validation de la délégation, vous avez les deux options suivantes :

    • Entrez un secret utilisé pour calculer une signature fournie à des fins de vérification que la demande tire de Gestion des API.
    • Cliquez sur le bouton Générer pour que Gestion des API génère une clé aléatoire pour vous.
  6. Cliquez sur Enregistrer.

Créer votre point de terminaison de délégation

Étapes recommandées pour la création d’un nouveau point de terminaison de délégation à implémenter sur votre site :

  1. Recevez une requête sous la forme suivante, en fonction de l’opération :

    http://www.yourwebsite.com/apimdelegation?operation={operation}&returnUrl={URL of source page}&salt={string}&sig={string}

    - Ou -

    http://www.yourwebsite.com/apimdelegation?operation={operation}&userId={user ID of account}&salt={string}&sig={string}

    Paramètres de requête :

    Paramètre Description
    opération Identifie le type de demande de délégation. Opérations disponibles : SignIn, SignUp, ChangePassword, ChangeProfile, CloseAccount et SignOut.
    returnUrl Sur SignIn ou SignUp, l’URL de l’endroit où l’utilisateur a cliqué sur un lien de connexion ou d’inscription.
    userId Sur ChangePassword, ChangeProfile, CloseAccount et SignOut, l’identifiant utilisateur du compte que vous souhaitez gérer.
    salt Chaîne salt spéciale utilisée pour calculer un code de hachage de sécurité.
    sig Code de hachage de sécurité calculé à comparer avec votre propre code de hachage calculé.
  2. Vérifiez que la demande émane bien de Gestion des API Azure (facultatif, mais fortement recommandé pour assurer la sécurité).

    • Calculez un code de hachage HMAC-SHA512 d’une chaîne basée sur les paramètres de requête returnUrl (ou UserId) et salt. Pour plus de détails, consultez notre exemple de code.

      Pour SignIn et SignUp :

      HMAC(salt + '\n' + returnUrl)
      

      Pour ChangePassword, ChangeProfile, CloseAccount et SignOut :

      HMAC(salt + '\n' + userId)
      
    • Comparez le code de hachage calculé plus haut avec la valeur du paramètre de requête sig. Si les deux codes de hachage correspondent, passez à l’étape suivante. Sinon, rejetez la demande.

  3. Vérifiez que vous recevez une requête pour une opération de connexion/inscription ou de gestion de compte.

  4. Présentez à l’utilisateur l’interface utilisateur de connexion/l’inscription ou de gestion de compte.

  5. Une fois l’opération effectuée de votre côté, gérez l’utilisateur dans Gestion des API. Par exemple, si l’utilisateur s’inscrit, créez-lui un compte correspondant dans Gestion des API.

    • Créez un utilisateur avec l'API REST de gestion de Gestion des API.
    • Définissez l’ID utilisateur sur la même valeur dans votre magasin d’utilisateurs ou un nouvel ID facile à suivre.
  6. Après la connexion ou l’inscription, lorsque l’utilisateur est correctement authentifié :

    • Demandez un jeton d’accès partagé via l’API REST Gestion des API.

    • Ajoutez un paramètre de requête returnUrl à l’URL SSO que vous reçue de l’appel d’API ci-dessus. Par exemple :

      https://contoso.developer.azure-api.net/signin-sso?token=<URL-encoded token>&returnUrl=%2Freturn%2Furl

    • Redirigez l’utilisateur vers l’URL générée ci-dessus.

Délégation de l’abonnement aux produits

La délégation des abonnements aux produits fonctionne de la même manière que la délégation de la connexion/inscription d’un utilisateur. Le processus final se présente comme suit :

  1. Le développeur sélectionne un produit dans le portail des développeurs Gestion des API, puis clique sur le bouton S’abonner.
  2. Le navigateur redirige vers le point de terminaison de délégation.
  3. Le point de terminaison de délégation effectue les étapes nécessaires pour l’abonnement au produit, que vous concevez. Elles peuvent inclure :
    • La redirection vers une autre page pour demander des informations de facturation.
    • Des questions supplémentaires.
    • Le stockage des informations, sans intervention de l’utilisateur.

Activer la fonctionnalité Gestion des API

Dans la page Délégation, cliquez sur Déléguer l’abonnement au produit.

Créer votre point de terminaison de délégation

Étapes recommandées pour la création d’un nouveau point de terminaison de délégation à implémenter sur votre site :

  1. Recevez une requête sous la forme suivante, en fonction de l’opération.

    http://www.yourwebsite.com/apimdelegation?operation={operation}&productId={product to subscribe to}&userId={user making request}&salt={string}&sig={string}

    - Ou -

    http://www.yourwebsite.com/apimdelegation?operation={operation}&subscriptionId={subscription to manage}&salt={string}&sig={string}

    Paramètres de requête :

    Paramètre Description
    opération Identifie le type de demande de délégation. Voici des options valides de demande d’abonnement aux produits :
    • Subscribe : une demande d’abonnement de l’utilisateur à un produit donné avec l’identifiant fourni (voir ci-dessous).
    • Unsubscribe : demande de désabonnement de l’utilisateur pour un produit.
    productId Sur Subscribe, l’ID du produit auquel l’utilisateur a demandé l’abonnement.
    userId Sur Subscribe, ID de l’utilisateur qui fait la demande.
    subscriptionId Sur Unsubscribe, ID d’abonnement du produit.
    salt Chaîne salt spéciale utilisée pour calculer un code de hachage de sécurité.
    sig Code de hachage de sécurité calculé à comparer avec votre propre code de hachage calculé.
  2. Vérifiez si la demande émane bien de Gestion des API Azure (facultatif, mais fortement recommandé pour assurer la sécurité).

    • Calculez un code de hachage HMAC-SHA512 d’une chaîne basée sur les paramètres de requête productId et userId (ou subscriptionId) et salt :

      Pour Subscribe :

      HMAC(salt + '\n' + productId + '\n' + userId)
      

      Pour Unsubscribe :

      HMAC(salt + '\n' + subscriptionId)
      
    • Comparez le code de hachage calculé plus haut avec la valeur du paramètre de requête sig. Si les deux codes de hachage correspondent, passez à l’étape suivante. Sinon, rejetez la demande.

  3. Traitez l’abonnement au produit en fonction du type d’opération demandé dans operation (par exemple : facturation, autres questions, etc.).

  4. Une fois l’opération effectuée de votre côté, gérez l’abonnement dans Gestion des API. Par exemple, abonnez l’utilisateur au produit Gestion des API en appelant l’API REST pour les abonnements.

Exemple de code

Ces exemples de code montrent comment générer le hachage du paramètre de requête returnUrl lors de la délégation de la connexion ou de l’inscription de l’utilisateur. Le returnUrl est l’URL de la page sur laquelle l’utilisateur a cliqué sur un lien de connexion ou d’inscription.

  • Prenez la clé de validation de délégation qui est définie sur l’écran Délégation du Portail Azure.
  • Créer un code de hachage HMAC, qui valide la signature, prouvant ainsi la validité de l’élément returnUrl transmis.

Avec une légère modification, vous pouvez utiliser le même code pour calculer d’autres hachages, par exemple avec productId et userId lors de la délégation d’un abonnement au produit.

Code C# pour générer le hachage de returnUrl

using System.Security.Cryptography;

string key = "delegation validation key";
string returnUrl = "returnUrl query parameter";
string salt = "salt query parameter";
string signature;
using (var encoder = new HMACSHA512(Convert.FromBase64String(key)))
{
    signature = Convert.ToBase64String(encoder.ComputeHash(Encoding.UTF8.GetBytes(salt + "\n" + returnUrl)));
    // change to (salt + "\n" + productId + "\n" + userId) when delegating product subscription
    // compare signature to sig query parameter
}

Code NodeJS pour générer le hachage de returnUrl

var crypto = require('crypto');

var key = 'delegation validation key'; 
var returnUrl = 'returnUrl query parameter';
var salt = 'salt query parameter';

var hmac = crypto.createHmac('sha512', new Buffer(key, 'base64'));
var digest = hmac.update(salt + '\n' + returnUrl).digest();
// change to (salt + "\n" + productId + "\n" + userId) when delegating product subscription
// compare signature to sig query parameter

var signature = digest.toString('base64');

Important

Vous devez republier le portail des développeurs pour que les modifications apportées à la délégation prennent effet.

Étapes suivantes