Delegieren von Benutzerregistrierung und Produktabonnierung

GILT FÜR: Entwickler | Basic | Standard | Premium

Delegierung ermöglicht, dass Ihre Website die Benutzerdaten besitzt und eine benutzerdefinierte Validierung durchführen kann. Mit der Delegierung können Sie Anmeldung/Registrierung (und zugehörige Kontoverwaltungsvorgänge) und Produktabonnierung von Entwicklern mithilfe Ihrer bestehenden Website verarbeiten, anstatt die integrierte Funktion im Entwicklerportal zu verwenden.

Delegieren der Anmeldung und Registrierung für Entwickler

Um die Anmeldung, Registrierung und Kontoverwaltungsoptionen für Entwickler für Ihre vorhandene Website zu delegieren, erstellen Sie einen speziellen Delegierungsendpunkt für Ihre Website. Diese spezielle Delegierung fungiert als Einstiegspunkt für alle über das API Management-Entwicklerportal initiierten Anmelde-/Registrierungsanforderungen und ähnliche Anforderungen.

Der endgültige Workflow sieht wie folgt aus:

  1. Ein Entwickler klickt auf den Anmeldungs-, Registrierungs- oder Kontoverwaltungslink im API Management-Entwicklerportal.
  2. Der Browser leitet zum Delegierungsendpunkt um.
  3. Der Delegierungsendpunkt leitet den Benutzer im Gegenzug an die Anmelde-/Registrierung oder die Benutzeroberfläche für die Kontoverwaltung um oder präsentiert sie ihm.
  4. Nach einem erfolgreichen Vorgang wird der Benutzer wieder an die Stelle im API Management-Entwicklerportal zurückgeleitet, von der er ursprünglich gekommen ist.

Einrichten von API Management zur Weiterleitung von Anforderungen über einen Delegierungsendpunkt

  1. Suchen Sie im Azure-Portal in Ihrer API Management-Ressource nach dem Entwicklerportal.

  2. Klicken Sie auf das ElementDelegierung.

  3. Klicken Sie auf das Kontrollkästchen, um Anmeldung und Registrierung delegieren zu aktivieren.

    Screenshot, der eine Delegierung der Anmeldung und Registrierung im Portal zeigt.

  4. Legen Sie die URL für Ihren speziellen Delegierungsendpunkt fest, und geben Sie sie in das Feld Delegierungsendpunkt-URL ein.

  5. Führen Sie im Feld Schlüssel für die Überprüfung der Delegierung eine der folgenden Optionen durch:

    • Geben Sie ein Geheimnis ein, das zum Berechnen einer Signatur verwendet wird, die präsentiert wird, um zu verifizieren, dass die Anforderung von API Management stammt.
    • Klicken Sie auf die Schaltfläche Generieren, damit API Management nach einen zufälligen Schlüssel für Sie generiert.
  6. Klicken Sie auf Speichern.

Erstellen Ihres Delegierungsendpunkts

Empfohlene Schritte zum Erstellen eines neuen Delegierungsendpunkts zur Implementierung in Ihren Standort:

  1. Erhalten einer Anforderung in der folgenden Form je nach Vorgang:

    http://www.yourwebsite.com/apimdelegation?operation={operation}&returnUrl={URL of source page}&salt={string}&sig={string}

    -ODER-

    http://www.yourwebsite.com/apimdelegation?operation={operation}&userId={user ID of account}&salt={string}&sig={string}

    Abfrageparameter:

    Parameter Beschreibung
    operation Identifiziert den Typ der Delegierungsanforderung. Verfügbare Vorgänge: Anmeldung, Registrierung, Kennwort ändern, Profil ändern, Konto schließen undAbmeldung.
    returnUrl Unter Anmeldung oder Registrierung ist die URL der Seite, auf welcher der Benutzer auf einen Anmeldungs- oder Registrierungslink geklickt hat.
    userId Unter Kennwort ändern, Profil ändern, Konto schließen und Abmeldung ist die Benutzer-ID des Kontos, das Sie verwalten möchten.
    Salt Eine spezielle Salt-Zeichenfolge, mit der ein Sicherheitshash berechnet wird.
    sig Ein berechneter Sicherheitshash, der für den Vergleich mit dem von Ihnen generierten Hash verwendet wird.
  2. Überprüfen, ob die Anforderung von Azure API Management stammt (optional, aus Sicherheitsgründen jedoch dringend empfohlen).

    • Berechnen Sie einen HMAC-SHA512-Hash für eine Zeichenfolge, basierend auf den Abfrageparametern returnUrl (oder BenutzerID) und salt. Weitere Beispiele finden Sie in unserem Beispielcode.

      Für Anmeldung und Registrierung:

      HMAC(salt + '\n' + returnUrl)
      

      Für Kennwort ändern, Profil ändern, Account schließen und Abmeldung:

      HMAC(salt + '\n' + userId)
      
    • Vergleichen Sie den generierten Hash mit dem Wert des sig-Abfrageparameters. Wenn die beiden Hashes übereinstimmen, fahren Sie mit dem nächsten Schritt fort. Lehnen Sie die Anforderung andernfalls ab.

  3. Vergewissern Sie sich, dass Sie eine Anforderung für einen Anmelde-/Registrierungs- oder Kontoverwaltungsvorgang erhalten.

  4. Präsentieren Sie dem Benutzer die Benutzeroberfläche für die Anmeldung/Registrierung oder Kontoverwaltung.

  5. Nachdem Sie den Vorgang auf Ihrer Seite abgeschlossen haben, verwalten Sie den Benutzer im API Management. Wenn sich zum Beispiel der Benutzer registriert, wird ein entsprechendes Konto für ihn im API Management angelegt.

    • Erstellen Sie einen Benutzer mit der REST-API für API Management.
    • Legen Sie die Benutzer-ID entweder auf denselben Wert wie in Ihrem Benutzerspeicher fest oder auf eine neue, leicht verfolgbare ID.
  6. Nach der Anmeldung oder Registrierung, wenn der Benutzer erfolgreich authentifiziert wurde:

    • Fordern Sie ein Token für gemeinsamen Zugriff über die REST-API von API Management an.

    • Fügen Sie der SSO-URL, die Sie aus dem obigen API-Aufruf erhalten haben, einen returnUrl-Abfrageparameter an. Zum Beispiel:

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

    • Leiten Sie den Benutzer an die oben erzeugte URL um.

Delegieren der Produktabonnierung

Die Delegierung von Produktabonnements funktioniert genauso wie die Delegierung der Benutzeranmeldung/-registrierung. Der komplette Workflow sieht wie folgt aus:

  1. Ein Entwickler wählt ein Produkt im API Management-Entwicklerportal aus und klickt auf die Schaltfläche Abonnieren.
  2. Der Browser leitet zum Delegierungsendpunkt um.
  3. Der Delegierungsendpunkt führt die erforderlichen Schritte für die Produktabonnierung aus, die Sie entwerfen. Diese können umfassen:
    • Umleiten an eine andere Seite zur Anforderung von Abrechnungsinformationen.
    • Stellen weiterer Fragen.
    • Speichern der Informationen ohne Erfordernis einer Benutzeraktion.

Aktivieren der API Management-Funktionalität

Klicken Sie auf der Seite Delegierung auf Produktabonnement delegieren.

Erstellen Ihres Delegierungsendpunkts

Empfohlene Schritte zum Erstellen eines neuen Delegierungsendpunkts zur Implementierung in Ihren Standort:

  1. SIe erhalten je nach Vorgang eine Anforderung im folgenden Format.

    http://www.yourwebsite.com/apimdelegation?operation={operation}&productId={product to subscribe to}&userId={user making request}&salt={string}&sig={string}

    -ODER-

    http://www.yourwebsite.com/apimdelegation?operation={operation}&subscriptionId={subscription to manage}&salt={string}&sig={string}

    Abfrageparameter:

    Parameter Beschreibung
    operation Identifiziert den Typ der Delegierungsanforderung. Gültige Optionen für die Produktabonnementanforderung sind:
    • Subscribe: Eine Anforderung für ein Benutzerabonnement eines Produkts mit der angegebenen ID (siehe unten).
    • Kündigen des Abonnements: Anforderung zur Kündigung eines Benutzerabonnements für ein Produkt
    productId Bei Subscribe die ID des Produkts, dessen Abonnement der Benutzer angefordert hat.
    userId Bei Subscribe die ID des anfordernden Benutzers.
    subscriptionId Bei Abonnement kündigendie Produktabonnement-ID.
    Salt Eine spezielle Salt-Zeichenfolge, mit der ein Sicherheitshash berechnet wird.
    sig Ein berechneter Sicherheitshash, der für den Vergleich mit dem von Ihnen generierten Hash verwendet wird.
  2. Überprüfen, ob die Anfrage von Azure API Management stammt (optional, aus Sicherheitsgründen jedoch dringend empfohlen)

    • Generieren Sie einen HMAC-SHA512-Hash für eine Zeichenfolge aus den Abfrageparametern ProductIdId, BenutzerId (oder AbonnementId) und salt:

      Zum Abonnieren:

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

      Zum Kündigen des Abonnements:

      HMAC(salt + '\n' + subscriptionId)
      
    • Vergleichen Sie den generierten Hash mit dem Wert des sig-Abfrageparameters. Wenn die beiden Hashes übereinstimmen, fahren Sie mit dem nächsten Schritt fort. Lehnen Sie die Anforderung andernfalls ab.

  3. Verarbeiten Sie das Produktabonnement basierend auf dem im Parameter operation angeforderten Vorgangstyp (z. B. Abrechnung, weitere Fragen usw.).

  4. Nachdem der Vorgang auf Ihrer Seite abgeschlossen wurde, verwalten Sie das Abonnement im API Management. Abonnieren Sie zum Beispiel den Benutzer für das API Managementprodukt indem Sie die REST-API für Abonnements aufrufen.

Beispielcode

Diese Codebeispiele zeigen, wie der Hash des returnUrlAbfrageparameters beim Delegieren der Benutzeranmeldung oder -registrierung generiert wird. Die returnUrl ist die URL der Seite, auf welcher der Benutzer auf einen Anmeldungs- oder Registrierungslink geklickt hat.

  • Abrufen des Validierungsschlüssels für Delegierungen, der auf dem Bildschirm Delegierung im Azure-Portal festgelegt wird.
  • Erstellen Sie einen HMAC, mit dem die Signatur überprüft und dadurch die Gültigkeit der übergebenen „returnUrl“ nachgewiesen wird.

Mit geringfügigen Änderungen können Sie denselben Code verwenden, um andere Hashes zu berechnen, z. B. mit productId und userId beim Delegieren des Produktabonnements.

C#-Code zum Generieren des Hashwerts von 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-Code zum Generieren des Hashwerts von 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');

Wichtig

Sie müssen Sie das Entwicklerportal erneut veröffentlichen, damit die Delegierungsänderungen wirksam werden.

Nächste Schritte