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. 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:
- Utvecklaren klickar på inloggnings- eller registreringslänken eller en länk för kontohantering på UTVECKLARportalen för API Management.
- Webbläsaren omdirigeras till delegeringsslutpunkten.
- Delegeringsslutpunkten omdirigerar i gengäld användaren till eller presenterar användaren med användargränssnittet för inloggning/registrering eller kontohantering.
- 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
I Azure Portal navigerar du till din API Management-instans.
I den vänstra menyn går du till Utvecklarportalen och väljer Delegering.
Klicka på kryssrutan för att aktivera ombudsinloggning och registrering.
Bestäm url:en för den särskilda delegeringsslutpunkten och ange den i fältet Delegeringsslutpunkts-URL.
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.
Klicka på Spara.
Skapa slutpunkten för delegering
Rekommenderade steg för att skapa en ny delegeringsslutpunkt som ska implementeras på din webbplats:
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 På 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 På 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. 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.
Kontrollera att du får en begäran om en inloggnings-/inloggnings- eller kontohanteringsåtgärd.
Presentera användaren med användargränssnittet för inloggning/registrering eller kontohantering.
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.
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:
- Utvecklaren väljer en produkt i API Management-utvecklarportalen och klickar på knappen Prenumerera .
- Webbläsaren omdirigeras till delegeringsslutpunkten.
- 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:
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 På Prenumerera, produkt-ID:t som användaren begärde prenumerationen på. userId På 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. 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.
Bearbeta produktprenumerationen baserat på den åtgärdstyp som begärdes i drift (till exempel fakturering, ytterligare frågor osv.).
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 Portal.
- 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
- Läs mer om utvecklarportalen.
- Autentisera med Microsoft Entra-ID eller med Azure AD B2C.
- Fler frågor om utvecklarportalen? Hitta svar i våra vanliga frågor och svar.