Delen via


Gebruikersregistratie en productabonnement delegeren

VAN TOEPASSING OP: Ontwikkelaar | Basic | Basic v2 | Standaard | Standard v2 | Premium | Premium v2

Met delegering kan uw website eigenaar zijn van de gebruikersgegevens en aangepaste validatie uitvoeren voor gebruikers van de ontwikkelaarsportal. Met delegatie kunt u aanmelding en 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 bestaat uit deze stappen:

  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 leidt de gebruiker om naar of presenteert aan de gebruiker 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 om aanvragen te routeren via een delegeringseindpunt

  1. Ga in Azure Portal naar uw API Management-exemplaar.

  2. Selecteer Delegatie in het zijbalkmenu onder De ontwikkelaarsportal.

  3. Schakel het selectievakje in om delegatie in te schakelen.

  4. Schakel het selectievakje in om aanmelding en registratie van gemachtigden in te schakelen.

    Schermopname van delegering van aanmelding en registratie in de portal.

  5. Kies de URL voor uw speciale delegatie-eindpunt en voer deze in het veld Service-eindpunt delegering in.

  6. In delegatiesleutels:

    • Genereer de primaire validatiesleutel of secundaire validatiesleutel (of beide) die u wilt gebruiken door uw delegatieservice om aanvragen van API Management te valideren. Selecteer het beletselteken (...) naast een van beide sleutels en selecteer Vervolgens Opnieuw genereren.
    • Selecteer het beletselteken (...) naast een van beide sleutels en selecteer vervolgens Kopiëren. Kopieer de sleutels naar een veilige locatie en gebruik deze bij het configureren van uw delegatieservice.
  7. Selecteer Opslaan.

Aanbeveling

U kunt de delegeringsvalidatiesleutels op elk gewenst moment draaien en opnieuw genereren. Rotatie vervangt de primaire sleutel door de secundaire sleutel en genereert de secundaire sleutel opnieuw. Nadat u de sleutels hebt opgeslagen, moet u de overdrachtsservice bijwerken om de nieuwe sleutels te gebruiken.

Uw delegeringseindpunt maken

Voer de volgende stappen uit om een nieuw delegeringseindpunt te maken dat u op uw site wilt implementeren:

  1. Ontvang een aanvraag in de volgende vorm, 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}

    Zoekparameters

    Kenmerk Beschrijving
    operatie 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).

    • Bereken een HMAC-SHA512-hash van een tekenreeks op basis van de returnUrl (of UserId) en salt queryparameters. 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 voorzien van de gebruikersinterface voor aanmeld-/registratie- 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 gebruikersbestand of een nieuwe, gemakkelijk te volgen 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 bestaat uit deze stappen:

  1. Ontwikkelaar selecteert een product in de API Management-ontwikkelaarsportal en selecteert 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 stappen kunnen het volgende omvatten:
    • U wordt omgeleid naar een andere pagina om factureringsgegevens aan te vragen.
    • Verdere vragen stellen.
    • Het opslaan van de informatie en het vereisen van geen actie van de gebruiker.

De API Management-functionaliteit inschakelen

Schakel op de pagina Delegatie het selectievakje in om delegatie in te schakelen en schakel het productabonnement Delegeren in.

Uw delegeringseindpunt maken

Voer de volgende stappen uit om een nieuw delegeringseindpunt voor uw site te maken:

  1. Ontvang een aanvraag in de volgende vorm, 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={abonnement om te beheren}&salt={string}&sig={string}

    Zoekparameters

    Kenmerk Beschrijving
    operatie 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 Inschrijven gaat het om de product-id waarvoor de gebruiker een abonnement wil aanvragen.
    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).

    • Bereken een HMAC-SHA512 van een tekenreeks op basis van de productId en userId (of subscriptionId) en de salt queryparameters:

      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 naar 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 u hebt ingesteld in het scherm Delegatie van Azure Portal.
  • Maak een HMAC om de handtekening te valideren en de geldigheid van de doorgegeven returnUrl aan te tonen.

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
}

Node.js 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.