Gebruikersregistratie en productabonnement delegeren

VAN TOEPASSING OP: Ontwikkelaar | Basic | Standaard | Premium

Met delegering kan uw website eigenaar zijn van de gebruikersgegevens en aangepaste validatie uitvoeren. Met delegatie kunt u aanmelding/registratie van ontwikkelaars (en gerelateerde accountbeheerbewerkingen) en productabonnementen afhandelen met behulp van uw bestaande website, in plaats van de ingebouwde functionaliteit van de ontwikkelaarsportal.

Aanmelden en registreren van ontwikkelaars delegeren

Als u aanmeldings- en registratieopties voor ontwikkelaars en accountbeheer voor ontwikkelaars wilt delegeren aan uw bestaande website, maakt u een speciaal delegeringseindpunt op uw site. Deze speciale delegatie fungeert als het toegangspunt voor aanmeldings-/registratie- en gerelateerde aanvragen die zijn geïnitieerd vanuit de API Management-ontwikkelaarsportal.

De laatste werkstroom is:

  1. Ontwikkelaars klikken op de aanmeldings- of registratiekoppeling of een koppeling voor accountbeheer in de API Management-ontwikkelaarsportal.
  2. Browser wordt omgeleid naar het delegeringseindpunt.
  3. Het delegeringseindpunt retourneert gebruikers om naar of presenteert de gebruiker met de gebruikersinterface voor aanmelden/registreren of accountbeheer.
  4. Nadat de bewerking is voltooid, wordt de gebruiker teruggeleid naar de API Management-ontwikkelaarsportal op de locatie waar de gebruiker zich bevindt.

API Management instellen voor het routeren van aanvragen via delegatie-eindpunt

  1. Zoek in Azure Portal naar de ontwikkelaarsportal in uw API Management-resource.

  2. Klik op het delegeringsitem .

  3. Schakel het selectievakje in om aanmelding en registratie delegeren in te schakelen.

    Schermopname van delegering van aanmelding en registratie in de portal.

  4. Bepaal de URL van uw speciale delegatie-eindpunt en voer deze in het veld Eindpunt-URL van delegatie in.

  5. Binnen het veld Delegatievalidatiesleutel :

    • Voer een geheim in dat wordt gebruikt om een handtekening te berekenen die is opgegeven voor verificatie dat de aanvraag afkomstig is van API Management.
    • Klik op de knop Genereren voor API Management om een willekeurige sleutel voor u te genereren.
  6. Klik op Opslaan.

Uw delegeringseindpunt maken

Aanbevolen stappen voor het maken van een nieuw delegeringseindpunt voor implementatie op uw site:

  1. Ontvang een aanvraag in het volgende formulier, afhankelijk van de bewerking:

    http://www.yourwebsite.com/apimdelegation?operation={operation}& returnUrl={URL van bronpagina}&salt={string}&sig={string}

    -Of-

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

    Queryparameters:

    Parameter Description
    schakelapparatuur optimaliseren Hiermee wordt het aanvraagtype delegatie geïdentificeerd. Beschikbare bewerkingen: SignIn, SignUp, ChangePassword, ChangeProfile, CloseAccount, SignOut.
    returnUrl Bij SignIn of SignUp, de URL van waar de gebruiker op een aanmeldings- of registratiekoppeling heeft geklikt.
    Userid Op ChangePassword, ChangeProfile, CloseAccount en SignOut, de gebruikers-id van het account dat u wilt beheren.
    Zout Een speciale zouttekenreeks die wordt gebruikt voor het berekenen van een beveiligings-hash.
    Sig Een berekende beveiligingshash die wordt gebruikt voor vergelijking met uw eigen berekende hash.
  2. Controleer of de aanvraag afkomstig is van Azure API Management (optioneel, maar sterk aanbevolen voor beveiliging).

    • Compute an HMAC-SHA512 hash of a string based on the returnUrl (or UserId) and salt query parameters. Bekijk onze voorbeeldcode voor voorbeelden.

      Voor SignIn en SignUp:

      HMAC(salt + '\n' + returnUrl)
      

      Voor ChangePassword, ChangeProfile, CloseAccount en SignOut:

      HMAC(salt + '\n' + userId)
      
    • Vergelijk de hierboven berekende hash met de waarde van de sig-queryparameter . Als de twee hashes overeenkomen, gaat u verder met de volgende stap. Anders kunt u de aanvraag weigeren.

  3. Controleer of u een aanvraag ontvangt voor een aanmeldings-/registratie- of accountbeheerbewerking.

  4. De gebruiker presenteren met de gebruikersinterface voor aanmelden/registreren of accountbeheer.

  5. Nadat u de bewerking aan uw zijde hebt voltooid, beheert u de gebruiker in API Management. Als de gebruiker zich bijvoorbeeld registreert, maakt u een bijbehorend account voor de gebruiker in API Management.

    • Maak een gebruiker met de API Management REST API.
    • Stel de gebruikers-id in op dezelfde waarde in uw gebruikersarchief of een nieuwe, eenvoudig bijgehouden id.
  6. Nadat de gebruiker is aangemeld of zich heeft geregistreerd, wordt de gebruiker geverifieerd:

    • Vraag een gedeeld toegangstoken aan via de API Management REST API.

    • Voeg een returnUrl-queryparameter toe aan de SSO-URL die u hebt ontvangen van de bovenstaande API-aanroep. Voorbeeld:

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

    • De gebruiker omleiden naar de hierboven geproduceerde URL.

Productabonnement delegeren

Het delegeren van productabonnementen werkt op dezelfde manier als het delegeren van gebruikersaanmelding/-registratie. De laatste werkstroom is als volgt:

  1. Ontwikkelaar selecteert een product in de API Management-ontwikkelaarsportal en klikt op de knop Abonneren .
  2. Browser wordt omgeleid naar het delegeringseindpunt.
  3. Het delegeringseindpunt voert de vereiste stappen voor het productabonnement uit, die u ontwerpt. Deze kunnen het volgende omvatten:
    • U wordt omgeleid naar een andere pagina om factureringsgegevens aan te vragen.
    • Aanvullende vragen stellen.
    • Het opslaan van de informatie en het vereisen van geen actie van de gebruiker.

De API Management-functionaliteit inschakelen

Klik op de pagina Delegatie op Productabonnement delegeren.

Uw delegeringseindpunt maken

Aanbevolen stappen voor het maken van een nieuw delegeringseindpunt voor implementatie op uw site:

  1. Ontvang een aanvraag in het volgende formulier, afhankelijk van de bewerking.

    http://www.yourwebsite.com/apimdelegation?operation={operation}&p roductId={product waarop u zich wilt abonneren}&userId={user making request}&salt={string}&sig={string}

    -Of-

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

    Queryparameters:

    Parameter Description
    schakelapparatuur optimaliseren Hiermee wordt het aanvraagtype delegatie geïdentificeerd. Geldige opties voor abonnementsaanvragen voor producten zijn:
    • Abonneren: een aanvraag om de gebruiker te abonneren op een bepaald product met de opgegeven id (zie hieronder).
    • Afmelden: een verzoek om een gebruiker van een product af te melden
    Productid Bij Abonneren is de product-id waarvoor de gebruiker een abonnement heeft aangevraagd.
    Userid Bij Abonneren wordt de id van de gebruiker aangevraagd.
    subscriptionId Bij Afmelden wordt de abonnements-id van het product weergegeven.
    Zout Een speciale zouttekenreeks die wordt gebruikt voor het berekenen van een beveiligings-hash.
    Sig Een berekende beveiligingshash die wordt gebruikt voor vergelijking met uw eigen berekende hash.
  2. Controleer of de aanvraag afkomstig is van Azure API Management (optioneel, maar sterk aanbevolen voor beveiliging)

    • Compute an HMAC-SHA512 of a string based on the productId and userId (or subscriptionId) and salt query parameters:

      Voor abonneren:

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

      Voor afmelden:

      HMAC(salt + '\n' + subscriptionId)
      
    • Vergelijk de hierboven berekende hash met de waarde van de sig-queryparameter . Als de twee hashes overeenkomen, gaat u verder met de volgende stap. Anders kunt u de aanvraag weigeren.

  3. Het productabonnement verwerken op basis van het aangevraagde bewerkingstype (bijvoorbeeld facturering, verdere vragen, enzovoort).

  4. Nadat u de bewerking aan uw zijde hebt voltooid, beheert u het abonnement in API Management. Abonneer de gebruiker bijvoorbeeld op het API Management-product door de REST API aan te roepen voor abonnementen.

Voorbeeldcode

Deze codevoorbeelden laten zien hoe u de hash van de returnUrl queryparameter genereert bij het delegeren van gebruikersaanmelding of -registratie. Dit returnUrl is de URL van de pagina waarop de gebruiker op de aanmeldings- of registratiekoppeling heeft geklikt.

  • Neem de validatiesleutel voor delegering, die is ingesteld in het scherm Delegatie van Azure Portal.
  • Maak een HMAC, waarmee de handtekening wordt gevalideerd, waarmee de geldigheid van de doorgegeven returnUrl wordt aangetoond.

Met een kleine wijziging kunt u dezelfde code gebruiken om andere hashes te berekenen, zoals met productId en userId bij het delegeren van het productabonnement.

C#-code voor het genereren van hash van 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
}

NodeJS-code voor het genereren van hash van 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');

Belangrijk

U moet de ontwikkelaarsportal opnieuw publiceren om de overdrachtswijzigingen van kracht te laten worden.

Volgende stappen