Dela via


Delegera användarregistring och produktprenumeration

GÄLLER FÖR: Utvecklare | Grundläggande | Basic v2 | Standard | Standard v2 | Premie

Med delegering kan din webbplats äga användardata och utföra anpassad validering. Med delegering kan du hantera inloggning/registrering av utvecklare (och relaterade kontohanteringsåtgärder) och produktprenumeration med din befintliga webbplats i stället för utvecklarportalens inbyggda funktioner.

Delegera utvecklarinloggning och registrering

Skapa en särskild delegeringsslutpunkt på webbplatsen om du vill delegera alternativen för inloggning och registrering och hantering av utvecklarkonton till din befintliga webbplats. Den här särskilda delegeringen fungerar som startpunkt för inloggning/registrering och relaterade begäranden som initieras från API Management-utvecklarportalen.

Det slutliga arbetsflödet blir:

  1. Utvecklaren klickar på inloggnings- eller registreringslänken eller en länk för kontohantering på UTVECKLARportalen för API Management.
  2. Webbläsaren omdirigeras till delegeringsslutpunkten.
  3. Delegeringsslutpunkten omdirigerar i gengäld användaren till eller presenterar användaren med användargränssnittet för inloggning/registrering eller kontohantering.
  4. När åtgärden är klar omdirigeras användaren tillbaka till API Management-utvecklarportalen på den plats de lämnade.

Konfigurera API Management för att dirigera begäranden via delegeringsslutpunkten

  1. I Azure-portalen går du till din API Management-instans.

  2. I den vänstra menyn går du till Utvecklarportalen och väljer Delegering.

  3. Klicka på kryssrutan för att aktivera ombudsinloggning och registrering.

    Skärmbild som visar delegering av inloggning och registrering i portalen.

  4. Bestäm url:en för den särskilda delegeringsslutpunkten och ange den i fältet Delegeringsslutpunkts-URL.

  5. I fältet Delegeringsverifieringsnyckel :

    • Ange en hemlighet som används för att beräkna en signatur som tillhandahålls för verifiering av att begäran kommer från API Management.
    • Klicka på knappen Generera för API Management för att generera en slumpmässig nyckel åt dig.
  6. Klicka på Spara.

Skapa slutpunkten för delegering

Rekommenderade steg för att skapa en ny delegeringsslutpunkt som ska implementeras på din webbplats:

  1. Ta emot en begäran i följande formulär, beroende på åtgärden:

    http://www.yourwebsite.com/apimdelegation?operation={operation}& returnUrl={URL för källsidan}&salt={string}&sig={string}

    -eller-

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

    Frågeparametrar:

    Parameter Description
    operation Identifierar typ av delegeringsbegäran. Tillgängliga åtgärder: SignIn, SignUp, ChangePassword, ChangeProfile, CloseAccount, SignOut.
    returnUrl SignIn or SignUp (Logga in eller Registrera dig) är url:en till den plats där användaren klickade på en inloggnings- eller registreringslänk.
    userId ChangePassword, ChangeProfile, CloseAccount och SignOut, användar-ID för det konto som du vill hantera.
    salt En särskild saltsträng som används för att beräkna en säkerhetshash.
    sig En beräknad säkerhetshash som används för jämförelse med din egen beräknade hash.
  2. Kontrollera att begäran kommer från Azure API Management (valfritt, men rekommenderas starkt för säkerhet).

    • Beräkna en HMAC-SHA512-hash för en sträng baserat på parametrarna returnUrl (eller UserId) och saltfrågor . Du kan till exempel kontrollera vår exempelkod.

      För SignIn och SignUp:

      HMAC(salt + '\n' + returnUrl)
      

      För ChangePassword, ChangeProfile, CloseAccount och SignOut:

      HMAC(salt + '\n' + userId)
      
    • Jämför hashen ovan med värdet för sig-frågeparametern. Om de två hashvärdena matchar går du vidare till nästa steg. Annars nekar du begäran.

  3. Kontrollera att du får en begäran om en inloggnings-/inloggnings- eller kontohanteringsåtgärd.

  4. Presentera användaren med användargränssnittet för inloggning/registrering eller kontohantering.

  5. När du har slutfört åtgärden på din sida hanterar du användaren i API Management. Om användaren till exempel registrerar sig skapar du ett motsvarande konto för dem i API Management.

    • Skapa en användare med API Management REST API.
    • Ange användar-ID:t till antingen samma värde i användararkivet eller ett nytt, lättspårat ID.
  6. När användaren har autentiserats efter inloggningen eller registreringen:

    • Begär en token för delad åtkomst via API Management REST API.

    • Lägg till en returnUrl-frågeparameter till den SSO-URL som du fick från API-anropet ovan. Till exempel:

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

    • Omdirigera användaren till den ovan producerade URL:en.

Delegera produktprenumeration

Delegering av produktprenumerationer fungerar på samma sätt som att delegera användarinloggning/registrering. Det slutliga arbetsflödet skulle vara följande:

  1. Utvecklaren väljer en produkt i API Management-utvecklarportalen och klickar på knappen Prenumerera .
  2. Webbläsaren omdirigeras till delegeringsslutpunkten.
  3. Delegeringsslutpunkten utför nödvändiga produktprenumerationssteg som du utformar. De kan omfatta:
    • Omdirigera till en annan sida för att begära faktureringsinformation.
    • Ställa ytterligare frågor.
    • Lagra informationen och inte kräva någon användaråtgärd.

Aktivera API Management-funktionen

På sidan Delegering klickar du på Delegera produktprenumeration.

Skapa slutpunkten för delegering

Rekommenderade steg för att skapa en ny delegeringsslutpunkt som ska implementeras på din webbplats:

  1. Ta emot en begäran i följande formulär, beroende på åtgärden.

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

    -eller-

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

    Frågeparametrar:

    Parameter Description
    operation Identifierar typ av delegeringsbegäran. Giltiga alternativ för produktprenumerationer är:
    • Prenumerera: en begäran om att prenumerera användaren på en viss produkt med angivet ID (se nedan).
    • Avsluta prenumeration: en begäran om att avbryta prenumerationen på en användare från en produkt
    Produktionen Prenumerera, produkt-ID:t som användaren begärde prenumerationen på.
    userId Prenumerera, den begärande användarens ID.
    subscriptionId Vid Avprenumeration, produktprenumerations-ID.
    salt En särskild saltsträng som används för att beräkna en säkerhetshash.
    sig En beräknad säkerhetshash som används för jämförelse med din egen beräknade hash.
  2. Kontrollera att begäran kommer från Azure API Management (valfritt, men rekommenderas starkt för säkerhet)

    • Beräkna en HMAC-SHA512 av en sträng baserat på parametrarna productId och userId (eller subscriptionId) och saltfrågor :

      För prenumeration:

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

      För avprenumerering:

      HMAC(salt + '\n' + subscriptionId)
      
    • Jämför hashen ovan med värdet för sig-frågeparametern. Om de två hashvärdena matchar går du vidare till nästa steg. Annars nekar du begäran.

  3. Bearbeta produktprenumerationen baserat på den åtgärdstyp som begärdes i drift (till exempel fakturering, ytterligare frågor osv.).

  4. När du har slutfört åtgärden på din sida hanterar du prenumerationen i API Management. Du kan till exempel prenumerera användaren på API Management-produkten genom att anropa REST-API:et för prenumerationer.

Exempelkod

Dessa kodexempel visar hur du genererar hashen för returnUrl frågeparametern när användaren delegerar inloggning eller registrering. returnUrl är URL:en för sidan där användaren klickade på inloggnings- eller registreringslänken.

  • Ta delegeringsverifieringsnyckeln, som anges på skärmen Delegering i Azure-portalen.
  • Skapa en HMAC som verifierar signaturen, vilket bevisar giltigheten för den skickade returnUrl.

Med liten ändring kan du använda samma kod för att beräkna andra hashar, till exempel med productId och userId när du delegerar produktprenumeration.

C#-kod för att generera hash för 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-kod för att generera hash för 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');

Viktigt!

Du måste publicera om utvecklarportalen för att delegeringsändringarna ska börja gälla.

Nästa steg