Delegování registrace uživatele a předplatného produktu
PLATÍ PRO: Vývojář | Základní | Basic v2 | Standardní | Standard v2 | Prémie
Delegování umožňuje vašemu webu vlastnit uživatelská data a provádět vlastní ověření. Pomocí delegování můžete místo integrované funkce portálu pro vývojáře zpracovávat přihlašování a registraci (a související operace správy účtů) a předplatné produktů pomocí stávajícího webu.
Delegování přihlášení a registrace vývojáře
Pokud chcete delegovat možnosti správy přihlašovacích a registračních a vývojářských účtů na stávající web, vytvořte na svém webu speciální koncový bod delegování. Toto speciální delegování funguje jako vstupní bod pro jakékoli přihlášení nebo registraci a související požadavky iniciované z portálu pro vývojáře služby API Management.
Konečný pracovní postup bude:
- Vývojář klikne na odkaz pro přihlášení nebo registraci nebo odkaz pro správu účtů na portálu pro vývojáře služby API Management.
- Prohlížeč přesměruje na koncový bod delegování.
- Koncový bod delegování při návratu přesměruje uživatele na uživatele nebo prezentuje uživatele s uživatelským rozhraním pro přihlášení nebo registraci nebo správu účtů.
- Po dokončení operace se uživatel přesměruje zpět na portál pro vývojáře služby API Management v umístění, které opustil.
Nastavení služby API Management pro směrování požadavků prostřednictvím koncového bodu delegování
Na webu Azure Portal přejděte k vaší instanci služby API Management.
V nabídce vlevo v části Portál pro vývojáře vyberte Delegování.
Kliknutím na zaškrtávací políčko povolíte přihlášení delegáta a registraci.
Rozhodněte adresu URL koncového bodu speciálního delegování a zadejte ji do pole Adresa URL koncového bodu delegování.
V poli Ověřovací klíč delegování:
- Zadejte tajný klíč použitý k výpočtu podpisu poskytnutého k ověření, že požadavek pochází ze služby API Management.
- Klikněte na tlačítko Generovat pro API Management a vygenerujte za vás náhodný klíč.
Klikněte na Uložit.
Vytvoření koncového bodu delegování
Doporučené kroky pro vytvoření nového koncového bodu delegování pro implementaci na webu:
V závislosti na operaci obdržíte požadavek v následujícím formuláři:
http://www.yourwebsite.com/apimdelegation?operation={operation}& returnUrl={URL zdrojové stránky}&salt={string}&sig={string}
-nebo-
http://www.yourwebsite.com/apimdelegation?operation={operation}& userId={ID uživatele účtu}&salt={string}&sig={string}
Parametry dotazu:
Parametr Popis operace Identifikuje typ žádosti o delegování. Dostupné operace: SignIn, SignUp, ChangePassword, ChangeProfile, CloseAccount, SignOut. returnUrl Při přihlášení nebo přihlášení se zobrazí adresa URL, na které uživatel klikl na odkaz pro přihlášení nebo registraci. userId V souboru ChangePassword, ChangeProfile, CloseAccount a SignOut je ID uživatele účtu, který chcete spravovat. sůl Speciální slaný řetězec používaný k výpočtu hodnoty hash zabezpečení. Sig Vypočítaná hodnota hash zabezpečení používaná pro porovnání s vlastní vypočítanou hodnotou hash. Ověřte, že požadavek pochází ze služby Azure API Management (volitelné, ale důrazně se doporučuje pro zabezpečení).
Vypočítá hodnotu hash HMAC-SHA512 řetězce na základě parametrů returnUrl (nebo UserId) a dotazu salt . Příklady najdete v našem ukázkovém kódu.
Pro přihlášení a registraci:
HMAC(salt + '\n' + returnUrl)
Pro ChangePassword, ChangeProfile, CloseAccount a SignOut:
HMAC(salt + '\n' + userId)
Porovnejte výše vypočítanou hodnotu hash s hodnotou parametru dotazu sig . Pokud se obě hodnoty hash shodují, přejděte k dalšímu kroku. Jinak žádost odepřete.
Ověřte, že obdržíte žádost o operaci přihlašování nebo registrace nebo správy účtů.
Prezentujte uživatele pomocí uživatelského rozhraní pro přihlášení nebo registraci nebo správu účtů.
Po dokončení operace na vaší straně spravujte uživatele ve službě API Management. Pokud se uživatel například zaregistruje, vytvořte pro ně odpovídající účet ve službě API Management.
- Vytvořte uživatele pomocí rozhraní REST API služby API Management.
- Nastavte ID uživatele na stejnou hodnotu ve vašem úložišti uživatelů nebo na nové, snadno sledované ID.
Po přihlášení nebo registraci se uživatel úspěšně ověří:
Vyžádání sdíleného přístupového tokenu prostřednictvím rozhraní REST API služby API Management
K adrese URL jednotného přihlašování, kterou jste obdrželi z výše uvedeného volání rozhraní API, připojte parametr dotazu returnUrl. Příklad:
https://contoso.developer.azure-api.net/signin-sso?token=<URL-encoded token>&returnUrl=%2Freturn%2Furl
Přesměrujte uživatele na výše vytvořenou adresu URL.
Delegování předplatného produktu
Delegování předplatných produktů funguje podobně jako delegování přihlášení nebo registrace uživatele. Konečný pracovní postup by byl následující:
- Vývojář vybere produkt na portálu pro vývojáře služby API Management a klikne na tlačítko Přihlásit se k odběru.
- Prohlížeč přesměruje na koncový bod delegování.
- Koncový bod delegování provádí požadované kroky předplatného produktu, které navrhujete. Mohou zahrnovat:
- Přesměrování na jinou stránku pro vyžádání fakturačních údajů
- Kladení dalších otázek
- Ukládání informací a nevyžaduje žádnou akci uživatele.
Povolení funkcí služby API Management
Na stránce Delegování klikněte na Delegovat předplatné produktu.
Vytvoření koncového bodu delegování
Doporučené kroky pro vytvoření nového koncového bodu delegování pro implementaci na webu:
V závislosti na operaci obdržíte požadavek v následujícím formuláři.
http://www.yourwebsite.com/apimdelegation?operation={operation}&p roductId={product to subscribe to}&userId={user making request}&salt={string}&sig={string}
-nebo-
http://www.yourwebsite.com/apimdelegation?operation={operation}& subscriptionId={subscription to manage}&salt={string}&sig={string}
Parametry dotazu:
Parametr Popis operace Identifikuje typ žádosti o delegování. Platné možnosti požadavků na předplatné produktu jsou: - Přihlášení k odběru: Žádost o přihlášení uživatele k odběru daného produktu se zadaným ID (viz níže).
- Odhlášení odběru: Žádost o odhlášení odběru uživatele z produktu
Productid Při přihlášení k odběru je ID produktu, které uživatel požádal o předplatné. userId Při přihlášení k odběru se zobrazí ID žádajícího uživatele. subscriptionId Při odhlášení odběru odběru předplatného produktu. sůl Speciální slaný řetězec používaný k výpočtu hodnoty hash zabezpečení. Sig Vypočítaná hodnota hash zabezpečení používaná pro porovnání s vlastní vypočítanou hodnotou hash. Ověřte, že požadavek pochází ze služby Azure API Management (volitelné, ale důrazně se doporučuje pro zabezpečení).
Vypočítá HMAC-SHA512 řetězce založeného na parametrech productId a userId (nebo subscriptionId) a salt query:
Pro přihlášení k odběru:
HMAC(salt + '\n' + productId + '\n' + userId)
Odhlášení odběru:
HMAC(salt + '\n' + subscriptionId)
Porovnejte výše vypočítanou hodnotu hash s hodnotou parametru dotazu sig . Pokud se obě hodnoty hash shodují, přejděte k dalšímu kroku. Jinak žádost odepřete.
Zpracování předplatného produktu na základě typu operace požadovaného v provozu (například fakturace, další dotazy atd.).
Po dokončení operace na vaší straně spravujte předplatné ve službě API Management. Můžete například přihlásit uživatele k odběru produktu API Management voláním rozhraní REST API pro předplatná.
Příklad kódu
Tyto ukázky kódu ukazují, jak vygenerovat hodnotu hash parametru returnUrl
dotazu při delegování přihlášení nebo registrace uživatele. Je adresa returnUrl
URL stránky, na které uživatel klikl na přihlašovací nebo registrační odkaz.
- Vezměte ověřovací klíč delegování, který je nastavený na obrazovce Delegování na webu Azure Portal.
- Vytvořte HMAC, který ověří podpis a prokáže platnost úspěšné adresy returnUrl.
S mírnou úpravou můžete použít stejný kód k výpočtu dalších hodnot hash, jako productId
je například delegování předplatného produktu a userId
jejich delegování.
Kód jazyka C# pro vygenerování hodnoty hash 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
}
Kód NodeJS pro vygenerování hodnoty hash 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');
Důležité
Aby se změny delegování projevily, musíte znovu publikovat portál pro vývojáře.
Další kroky
- Přečtěte si další informace o portálu pro vývojáře.
- Ověřování pomocí ID Microsoft Entra nebo Azure AD B2C
- Další dotazy k portálu pro vývojáře? Odpovědi najdete v nejčastějších dotazech.