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

DOTYCZY: Developer | Podstawowa | Standardowa | Premium

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 specjalne delegowanie działa jako punkt wejścia dla wszelkich żądań logowania/rejestracji i powiązanych żądań zainicjowanych w portalu deweloperów usługi 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 delegowania w zwracaniu przekierowuje użytkownika do lub przedstawia użytkownika za pomocą interfejsu użytkownika logowania/rejestracji lub zarządzania kontami.
  4. Po zakończeniu operacji użytkownik zostanie przekierowany z powrotem do portalu deweloperów usługi API Management w lokalizacji, w której opuścił.

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

  1. W witrynie Azure Portal wyszukaj portal dla deweloperów w zasobie usługi API Management.

  2. Kliknij element 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ź wpis tajny używany do obliczania podpisu dostarczonego do weryfikacji, że żądanie pochodzi z usługi API Management.
    • Kliknij przycisk Generuj dla usługi API Management, aby wygenerować losowy klucz.
  6. Kliknij przycisk Zapisz.

Tworzenie punktu końcowego 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
    rozdzielnicy Identyfikuje typ żądania delegowania. Dostępne operacje: SignIn, SignUp, ChangePassword, ChangeProfile, CloseAccount, SignOut.
    Returnurl Na stronie SignIn lub SignUp (Logowanie) adres URL, pod którym użytkownik kliknął link logowania lub rejestracji.
    Userid W obszarze ChangePassword, ChangeProfile, CloseAccount i SignOut identyfikator użytkownika konta, którym chcesz zarządzać.
    Soli Specjalny ciąg soli używany do obliczania skrótu zabezpieczeń.
    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 ciągu na podstawie parametrów returnUrl (lub UserId) i salt query. Aby zapoznać się z przykładami, sprawdź przykładowy kod.

      W przypadku rejestracji i rejestracji:

      HMAC(salt + '\n' + returnUrl)
      

      W przypadku wartości ChangePassword, ChangeProfile, CloseAccount i SignOut:

      HMAC(salt + '\n' + userId)
      
    • Porównaj obliczony powyżej skrót z wartością parametru zapytania sig . Jeśli te dwa 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. Prezentowanie użytkownika za pomocą interfejsu użytkownika logowania/rejestracji lub zarządzania kontami.

  5. Po zakończeniu operacji po 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.

    • Dołącz parametr zapytania returnUrl do adresu URL logowania jednokrotnego otrzymanego z wywołania interfejsu 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.

Tworzenie punktu końcowego 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}&p roductId={product do subskrybowania}&userId={żądanie wysyłające żą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
    rozdzielnicy 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 W obszarze Subskrybuj identyfikator produktu, którego zażądał użytkownik.
    Userid W obszarze Subskrybuj identyfikator żądania użytkownika.
    Subscriptionid Po anulowaniu subskrypcji produktu identyfikator subskrypcji.
    Soli Specjalny ciąg soli używany do obliczania skrótu zabezpieczeń.
    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) i salt query:

      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 te dwa 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 stronie zarządzaj subskrypcją w usłudze 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.

  • Wykonaj klucz weryfikacji delegowania ustawiony na ekranie Delegowanie w witrynie Azure Portal.
  • Utwórz element HMAC, który weryfikuje podpis, potwierdzając ważność przekazanego elementu returnUrl.

Z niewielkimi modyfikacjami można użyć tego samego kodu, aby obliczyć inne skróty, takie jak i productIduserId 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 NodeJS 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.

Następne kroki