Delegování registrace uživatele a předplatného produktu

PLATÍ PRO: Vývojář | Základní | Standardní | Premium

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:

  1. 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.
  2. Prohlížeč přesměruje na koncový bod delegování.
  3. 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ů.
  4. 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í

  1. Na webu Azure Portal vyhledejte ve svém prostředku SLUŽBY API Management portál pro vývojáře.

  2. Klikněte na položku Delegování .

  3. Kliknutím na zaškrtávací políčko povolíte přihlášení delegáta a registraci.

    Snímek obrazovky znázorňující delegování přihlášení a registrace na portálu

  4. Rozhodněte adresu URL koncového bodu speciálního delegování a zadejte ji do pole Adresa URL koncového bodu delegování.

  5. 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íč.
  6. 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:

  1. 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.
  2. 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.

  3. Ověřte, že obdržíte žádost o operaci přihlašování nebo registrace nebo správy účtů.

  4. Prezentujte uživatele pomocí uživatelského rozhraní pro přihlášení nebo registraci nebo správu účtů.

  5. 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.
  6. 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í:

  1. 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.
  2. Prohlížeč přesměruje na koncový bod delegování.
  3. 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:

  1. 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.
  2. 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.

  3. Zpracování předplatného produktu na základě typu operace požadovaného v provozu (například fakturace, další dotazy atd.).

  4. 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