Udostępnij za pośrednictwem


Jak delegować rejestrację użytkownika i subskrypcję produktu

DOTYCZY: Developer | Podstawowa | Podstawowa wersja 2 | Standardowa | Standardowa, wersja 2 | Premium | Premium, wersja 2

Delegowanie umożliwia witrynie internetowej posiadanie danych użytkownika i przeprowadzenie weryfikacji niestandardowej. Delegowanie umożliwia obsługę logowania/rejestracji deweloperów (oraz powiązanych operacji zarządzania kontami) i subskrypcji produktu przy użyciu istniejącej witryny internetowej zamiast wbudowanej funkcji portalu deweloperów.

Delegowanie logowania i rejestracji dewelopera

Aby delegować opcje logowania deweloperów i rejestracji i zarządzania kontami deweloperów do istniejącej witryny internetowej, utwórz specjalny punkt końcowy delegowania w witrynie. To specjalna delegacja działa jako punkt wejścia dla wszelkich żądań logowania/rejestracji oraz powiązanych żądań zainicjowanych w portalu dla deweloperów API Management.

Ostateczny przepływ pracy będzie:

  1. Deweloper klika link logowania lub rejestracji lub link do zarządzania kontami w portalu deweloperów usługi API Management.
  2. Przeglądarka przekierowuje do punktu końcowego delegowania.
  3. Punkt końcowy przekierowuje użytkownika do ekranu logowania/rejestracji lub zarządzania kontem.
  4. Po zakończeniu operacji użytkownik zostanie przekierowany z powrotem do portalu programisty usługi API Management do miejsca, które wcześniej opuścił.

Konfigurowanie usługi API Management do kierowania żądań za pośrednictwem punktu końcowego delegowania

  1. W witrynie Azure Portal przejdź do wystąpienia usługi API Management.

  2. W menu po lewej stronie w obszarze Portal deweloperów wybierz pozycję Delegowanie.

  3. Kliknij pole wyboru, aby włączyć logowanie delegowane i rejestrowanie.

    Zrzut ekranu przedstawiający delegowanie logowania i rejestracji w portalu.

  4. Określ adres URL specjalnego punktu końcowego delegowania i wprowadź go w polu Adres URL punktu końcowego delegowania.

  5. W polu Klucz weryfikacji delegowania wykonaj jedną z następujących czynności:

    • Wprowadź tajny klucz używany do obliczania podpisu, który jest dostarczany do weryfikacji, aby potwierdzić, że żądanie pochodzi z Zarządzania API.
    • Kliknij przycisk Generuj dla usługi API Management, aby wygenerować losowy klucz.
  6. Kliknij przycisk Zapisz.

Utwórz punkt końcowy delegowania

Zalecane kroki tworzenia nowego punktu końcowego delegowania w celu zaimplementowania w witrynie:

  1. Odbierz żądanie w następującym formularzu, w zależności od operacji:

    http://www.yourwebsite.com/apimdelegation?operation={operation}& returnUrl={adres URL strony źródłowej}&salt={string}&sig={string}

    -Lub-

    http://www.yourwebsite.com/apimdelegation?operation={operation}& userId={identyfikator użytkownika konta}&salt={string}&sig={string}

    Parametry zapytania:

    Parametr Opis
    operacja Identyfikuje typ żądania delegowania. Dostępne operacje: SignIn, SignUp, ChangePassword, ChangeProfile, CloseAccount, SignOut.
    returnUrl Na stronie logowania lub rejestracji, adres URL, pod którym użytkownik kliknął link logowania lub rejestracji.
    userId Na elementach ChangePassword, ChangeProfile, CloseAccount i SignOut podaj identyfikator użytkownika konta, którym chcesz zarządzać.
    sól Specjalny łańcuch soli używany do obliczania zabezpieczającego skrótu.
    Sig Obliczony skrót zabezpieczeń używany do porównania z własnym obliczonym skrótem.
  2. Sprawdź, czy żądanie pochodzi z usługi Azure API Management (opcjonalnie, ale zdecydowanie zalecane w przypadku zabezpieczeń).

    • Oblicz skrót HMAC-SHA512 dla ciągu znaków na podstawie parametrów zapytania returnUrl (lub UserId) i salt. Aby zapoznać się z przykładami, sprawdź przykładowy kod.

      W przypadku logowania i rejestracji:

      HMAC(salt + '\n' + returnUrl)
      

      W przypadku ChangePassword, ChangeProfile, CloseAccount i SignOut:

      HMAC(salt + '\n' + userId)
      
    • Porównaj obliczony powyżej skrót z wartością parametru zapytania sig . Jeśli oba skróty są zgodne, przejdź do następnego kroku. W przeciwnym razie odmów żądania.

  3. Sprawdź, czy otrzymasz żądanie dotyczące operacji logowania/rejestracji lub zarządzania kontami.

  4. Prezentuj użytkownikowi interfejs logowania/rejestracji lub zarządzania kontem.

  5. Po zakończeniu operacji po swojej stronie, zarządzaj użytkownikiem w usłudze API Management. Jeśli na przykład użytkownik zarejestruje się, utwórz odpowiednie konto dla nich w usłudze API Management.

    • Utwórz użytkownika przy użyciu interfejsu API REST usługi API Management.
    • Ustaw identyfikator użytkownika na tę samą wartość w sklepie użytkownika lub nowy, łatwo śledzony identyfikator.
  6. Po zalogowaniu się lub utworzeniu konta, gdy użytkownik zostanie pomyślnie uwierzytelniony:

    • Zażądaj tokenu dostępu współdzielonego za pośrednictwem interfejsu API REST usługi API Management.

    • Dodaj parametr zapytania returnUrl do adresu URL SSO otrzymanego z wywołania API powyżej. Na przykład:

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

    • Przekieruj użytkownika do powyższego utworzonego adresu URL.

Delegowanie subskrypcji produktu

Delegowanie subskrypcji produktów działa podobnie do delegowania logowania użytkownika/rejestracji. Ostateczny przepływ pracy będzie następujący:

  1. Deweloper wybiera produkt w portalu deweloperów usługi API Management i klika przycisk Subskrybuj.
  2. Przeglądarka przekierowuje do punktu końcowego delegowania.
  3. Punkt końcowy delegowania wykonuje wymagane kroki subskrypcji produktu, które projektujesz. Mogą one obejmować:
    • Przekierowywanie do innej strony w celu żądania informacji rozliczeniowych.
    • Zadawanie dodatkowych pytań.
    • Przechowywanie informacji i nie wymaga żadnej akcji użytkownika.

Włączanie funkcji usługi API Management

Na stronie Delegowanie kliknij pozycję Deleguj subskrypcję produktu.

Utwórz punkt końcowy delegowania

Zalecane kroki tworzenia nowego punktu końcowego delegowania w celu zaimplementowania w witrynie:

  1. Odbierz żądanie w następującej formie, w zależności od operacji.

    http://www.yourwebsite.com/apimdelegation?operation={operation}&productId={produkt do subskrypcji}&userId={użytkownik składający żądanie}&salt={ciąg}&sig={ciąg}

    -Lub-

    http://www.yourwebsite.com/apimdelegation?operation={operation}& subscriptionId={subskrypcja do zarządzania}&salt={string}&sig={string}

    Parametry zapytania:

    Parametr Opis
    operacja Identyfikuje typ żądania delegowania. Prawidłowe opcje żądań subskrypcji produktów to:
    • Subskrybuj: żądanie zasubskrybowania użytkownika do danego produktu o podanym identyfikatorze (patrz poniżej).
    • Anulowanie subskrypcji: żądanie anulowania subskrypcji użytkownika z produktu
    Productid Identyfikator produktu, subskrypcji którego zażądał użytkownik, znajduje się w Subskrybuj.
    userId Na Subskrybuj, identyfikator użytkownika żądającego.
    subscriptionId Po anulowaniu subskrypcji produktu identyfikator subskrypcji.
    sól Specjalny łańcuch soli używany do obliczania zabezpieczającego skrótu.
    Sig Obliczony skrót zabezpieczeń używany do porównania z własnym obliczonym skrótem.
  2. Sprawdź, czy żądanie pochodzi z usługi Azure API Management (opcjonalnie, ale zdecydowanie zalecane w przypadku zabezpieczeń)

    • Oblicz HMAC-SHA512 ciągu na podstawie parametrów productId i userId (lub subscriptionId) oraz zapytania salt.

      Dla subskrypcji:

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

      W przypadku anulowania subskrypcji:

      HMAC(salt + '\n' + subscriptionId)
      
    • Porównaj obliczony powyżej skrót z wartością parametru zapytania sig . Jeśli oba skróty są zgodne, przejdź do następnego kroku. W przeciwnym razie odmów żądania.

  3. Przetwórz subskrypcję produktu na podstawie typu operacji żądanego w operacji (na przykład: rozliczenia, dalsze pytania itp.).

  4. Po zakończeniu operacji po swojej stronie, zarządzaj subskrypcją w API Management. Na przykład zasubskrybuj użytkownika do produktu API Management, wywołując interfejs API REST dla subskrypcji.

Przykładowy kod

Te przykłady kodu pokazują, jak wygenerować skrót parametru returnUrl zapytania podczas delegowania logowania użytkownika lub rejestracji. To returnUrl adres URL strony, w której użytkownik kliknął link logowania lub rejestracji.

  • Weź klucz weryfikacji delegowania, który jest ustawiony na ekranie Delegowanie w portalu Azure.
  • Utwórz HMAC, który weryfikuje podpis, potwierdzając ważność przekazanego returnUrl.

Z niewielkimi modyfikacjami można użyć tego samego kodu do obliczania innych wartości haszowych, na przykład z użyciem productId i userId podczas delegowania subskrypcji produktu.

Kod języka C# do generowania skrótu 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
}

Kod w Node.js do generowania skrótu 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');

Ważne

Aby zmiany delegowania zaczęły obowiązywać, należy ponownie opublikować portal deweloperów.