Dela via


Delegera användarregistring och produktprenumeration

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

Med delegering kan din webbplats äga användardata och utföra anpassad validering för användare av utvecklarportalen. Med delegering kan du hantera inloggning och registrering av utvecklare (och relaterade kontohanteringsåtgärder) och produktprenumeration med hjälp av 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 består av följande steg:

  1. Utvecklaren klickar på länken för inloggning eller registrering eller en länk för kontohantering på API Management-utvecklarportalen.
  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 en delegeringsslutpunkt

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

  2. Välj Delegering på sidomenyn under Utvecklarportalen.

  3. Markera kryssrutan för att aktivera delegering.

  4. Markera kryssrutan för att aktivera ombudsinloggning och registrering.

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

  5. Välj URL:en för din särskilda delegeringsslutpunkt och ange den i fältet Delegeringstjänstslutpunkt .

  6. I avsnittet Delegeringsnycklar:

    • Generera den primära valideringsnyckeln eller den sekundära valideringsnyckeln (eller båda) som ska användas av delegeringstjänsten för att verifiera begäranden från API Management. Välj ellipsen (...) bredvid någon av nycklarna och välj sedan Återskapa.
    • Välj ellipsen (...) bredvid någon av nycklarna och välj sedan Kopiera. Kopiera nycklarna till en säker plats och använd dem när du konfigurerar delegeringstjänsten.
  7. Välj Spara.

Tips/Råd

Du kan rotera och återskapa delegeringsverifieringsnycklarna när som helst. Rotation ersätter den primära nyckeln med den sekundära nyckeln och återskapar den sekundära nyckeln. När du har sparat nycklarna måste du uppdatera delegeringstjänsten så att de nya nycklarna används.

Skapa slutpunkten för delegering

Följ dessa steg för att skapa en ny delegeringsslutpunkt som ska implementeras på webbplatsen:

  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 Beskrivning
    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 består av följande steg:

  1. Utvecklaren väljer en produkt i API Management-utvecklarportalen och väljer knappen Prenumerera .
  2. Webbläsaren omdirigeras till delegeringsslutpunkten.
  3. Delegeringsslutpunkten utför nödvändiga produktprenumerationssteg som du utformar. De här stegen kan vara:
    • 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 markerar du kryssrutan Aktivera delegering och aktiverar sedan Delegera produktprenumeration.

Skapa slutpunkten för delegering

Följ dessa steg för att skapa en ny delegeringsslutpunkt för din webbplats:

  1. Ta emot en förfrågan i följande form, 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={abonnemang att hantera}&salt={string}&sig={string}

    Frågeparametrar:

    Parameter Beskrivning
    operation Identifierar typ av delegeringsbegäran. Giltiga alternativ för produktprenumeration ä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
    produktId 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å frågeparametrarna productId och userId (eller subscriptionId) och salt :

      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 du anger på skärmen Delegering i Azure-portalen.
  • Skapa en HMAC som validerar signaturen och 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
}

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