Teilen über


Delegieren von Benutzerregistrierung und Produktabonnierung

GILT FÜR: Developer | Basic | Basic v2 | Standard | Standard v2 | Premium | Premium v2

Die Delegierung ermöglicht Es Ihrer Website, die Benutzerdaten zu besitzen und eine benutzerdefinierte Überprüfung für Benutzer des Entwicklerportals durchzuführen. Mit der Delegierung können Sie die Entwickleranmeldung und -registrierung (und damit verbundene Kontoverwaltungsvorgänge) und das Produktabonnement mithilfe Ihrer vorhandenen Website anstelle der integrierten Funktionalität des Entwicklerportals behandeln.

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 Anmeldungen/Registrierungen und damit verbundenen Anforderungen, die vom API Management-Entwicklerportal initiiert wurden.

Der endgültige Workflow besteht aus den folgenden Schritten:

  1. Entwickler klicken auf den Anmelde- oder Registrierungslink oder einen 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 der API-Verwaltung zum Weiterleiten von Anforderungen über einen Delegierungsendpunkt

  1. Wechseln Sie im Azure-Portal zu Ihrer API-Verwaltungsinstanz.

  2. Wählen Sie im Randleistenmenü unter "Entwicklerportal" die Option "Delegierung" aus.

  3. Aktivieren Sie das Kontrollkästchen, um die Delegierung zu aktivieren.

  4. Aktivieren Sie das Kontrollkästchen, um die Stellvertretungsanmeldung und -registrierung zu aktivieren.

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

  5. Wählen Sie die URL für Ihren speziellen Delegierungsendpunkt aus, und geben Sie sie in das Feld "Delegierungsdienstendpunkt " ein.

  6. In Delegierungsschlüsseln:

    • Generieren Sie den primären Überprüfungsschlüssel oder sekundären Validierungsschlüssel (oder beides), um von Ihrem Delegierungsdienst zum Überprüfen von Anforderungen aus der API-Verwaltung zu verwenden. Wählen Sie die Auslassungspunkte (...) neben einem Schlüssel aus, und wählen Sie dann Neu generieren aus.
    • Wählen Sie die Auslassungspunkte (...) neben einem Schlüssel aus, und wählen Sie dann Kopieren aus. Kopieren Sie die Schlüssel an einen sicheren Speicherort, und verwenden Sie sie beim Konfigurieren des Delegierungsdiensts.
  7. Wählen Sie Speichern aus.

Tipp

Sie können die Delegierungsvalidierungsschlüssel jederzeit drehen und neu generieren. Rotation ersetzt den Primärschlüssel durch den Sekundärschlüssel und regeneriert diesen. Achten Sie nach dem Speichern der Schlüssel darauf, den Delegierungsdienst so zu aktualisieren, dass die neuen Schlüssel verwendet werden.

Erstellen Ihres Delegierungsendpunkts

Führen Sie die folgenden Schritte aus, um einen neuen Delegierungsendpunkt zu erstellen, der auf Ihrer Website implementiert werden soll:

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

    http://www.yourwebsite.com/apimdelegation?operation={operation}& returnUrl={URL der Quellseite}&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. 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 von Produktabonnements

Die Delegierung von Produktabonnements funktioniert genauso wie die Delegierung der Benutzeranmeldung/-registrierung. Der endgültige Workflow besteht aus den folgenden Schritten:

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

Aktivieren der API Management-Funktionalität

Aktivieren Sie auf der Seite " Delegierung " das Kontrollkästchen zum Aktivieren der Delegierung und aktivieren Sie dann das Produktabonnement "Stellvertretung".

Erstellen Ihres Delegierungsendpunkts

Führen Sie die folgenden Schritte aus, um einen neuen Delegierungsendpunkt für Ihre Website zu erstellen:

  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 Produktabonnementanfragen 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. Vergewissern Sie sich, dass die Anforderung von Azure API Management stammt (optional, aber dringend für Sicherheit 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. Dies returnUrl ist die URL der Seite, auf der der Benutzer auf den Anmelde- oder Registrierungslink geklickt hat.

  • Nehmen Sie den Delegierungsvalidierungsschlüssel, den Sie auf dem Bildschirm " Delegierung " des Azure-Portals festgelegt haben.
  • Erstellen Sie einen HMAC, der die Signatur validiert und die Gültigkeit des übergebenen returnUrl nachweist.

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
}

Node.js-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.