Freigeben über


Hinzufügen eines API-Connectors zu einem Registrierungsprozess

Von Bedeutung

Ab dem 1. Mai 2025 steht Azure AD B2C nicht mehr für neue Kunden zur Verfügung. Weitere Informationen finden Sie in unseren HÄUFIG gestellten Fragen.

Bevor Sie beginnen, verwenden Sie die Auswahl eines Richtlinientyps oben auf dieser Seite, um den Typ der Richtlinie auszuwählen, die Sie einrichten. Azure Active Directory B2C bietet zwei Methoden zum Definieren der Benutzerinteraktion mit Ihren Anwendungen: vordefinierte Benutzerflows oder vollständig konfigurierbare benutzerdefinierte Richtlinien. Die Schritte, die in diesem Artikel erforderlich sind, unterscheiden sich für jede Methode.

Als Entwickler oder IT-Administrator können Sie API-Connectors verwenden, um Ihre Anmeldebenutzerflüsse in REST-APIs zu integrieren, um die Anmeldeerfahrung anzupassen und in externe Systeme zu integrieren. Am Ende dieser exemplarischen Vorgehensweise können Sie einen Azure AD B2C-Benutzerfluss erstellen, der mit REST-API-Diensten interagiert, um Ihre Anmeldeerfahrungen zu ändern.

Sie können einen API-Endpunkt mithilfe eines unserer Beispiele erstellen.

In diesem Szenario fügen wir den Benutzern die Möglichkeit hinzu, eine Treuenummer auf der Azure AD B2C-Anmeldeseite einzugeben. Die REST-API überprüft, ob die Kombination aus E-Mail und Treuenummer einem Werbecode zugeordnet ist. Wenn die REST-API einen Werbecode für diesen Benutzer findet, wird sie an Azure AD B2C zurückgegeben. Schließlich wird der Aktionscode in die Tokenansprüche so eingefügt, dass er von der Anwendung genutzt werden kann.

Sie können die Interaktion auch als Orchestrierungsschritt entwerfen. Dies ist geeignet, wenn die REST-API keine Daten auf dem Bildschirm überprüft und immer Ansprüche zurückgibt. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Integrieren von REST-API-Anspruchsbörsen in Ihre Azure AD B2C-Benutzerreise als Orchestrierungsschritt.

Voraussetzungen

Erstellen eines API-Connectors

Um einen API-Connector zu verwenden, erstellen Sie zunächst den API-Connector und aktivieren ihn anschließend in einem Benutzerflow.

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie unter Azure-DiensteAzure AD B2C aus.

  3. Wählen Sie API-Connectors aus, und wählen Sie dann "Neuer API-Connector" aus.

    Screenshot der Grundlegenden Konfiguration für einen API-Connector

  4. Geben Sie einen Anzeigenamen für den Aufruf an. Überprüfen Sie beispielsweise Benutzerinformationen.

  5. Geben Sie die Endpunkt-URL für den API-Aufruf an.

  6. Wählen Sie den Authentifizierungstyp aus, und konfigurieren Sie die Authentifizierungsinformationen zum Aufrufen Ihrer API. Erfahren Sie mehr über das Schützen Ihres API-Connectors.

    Screenshot der Authentifizierungskonfiguration für einen API-Connector

  7. Wählen Sie Speichern aus.

An die API gesendete Anforderung

Ein API-Connector wird als HTTP POST-Anforderung dargestellt und sendet Benutzerattribute („Ansprüche“) als Schlüssel-Wert-Paare in einem JSON-Text. Attribute werden ähnlich wie Microsoft Graph-Benutzereigenschaften serialisiert.

Beispielanforderung

POST <API-endpoint>
Content-type: application/json

{
 "email": "johnsmith@fabrikam.onmicrosoft.com",
 "identities": [
     {
     "signInType":"federated",
     "issuer":"facebook.com",
     "issuerAssignedId":"0123456789"
     }
 ],
 "displayName": "John Smith",
 "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
 "givenName":"John",
 "surname":"Smith",
 "jobTitle":"Supplier",
 "streetAddress":"1000 Microsoft Way",
 "city":"Seattle",
 "postalCode": "12345",
 "state":"Washington",
 "country":"United States",
 "extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
 "extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
 "step": "<step-name>",
 "client_id":"00001111-aaaa-2222-bbbb-3333cccc4444",
 "ui_locales":"en-US"
}

Nur Benutzereigenschaften und benutzerdefinierte Attribute, die unterAzure AD B2C>Benutzerattribute aufgeführt sind, können in der Anforderung gesendet werden.

Benutzerdefinierte Attribute sind im Format extension_<extensions-app-id>_CustomAttribute im Verzeichnis vorhanden. Die API sollte den Empfang von Ansprüchen in diesem serialisierten Format erwarten. Weitere Informationen zu benutzerdefinierten Attributen finden Sie unter Definieren von benutzerdefinierten Attributen in Azure AD B2C.

Darüber hinaus werden in der Regel die folgenden Ansprüche in allen Anforderungen gesendet:

  • UI-Gebietsschemas („ui_locales“): Die auf dem Gerät konfigurierten Gebietsschemas eines Endbenutzers. Kann von Ihrer API verwendet werden, um internationalisierte Antworten zurückzugeben.
  • Schritt ('step'): Der Schritt oder Punkt im Benutzerflow, für den der API-Connector aufgerufen wurde. Mögliche Werte sind:
    • PostFederationSignup – entspricht „Nach dem Verbund mit einem Identitätsanbieter während der Registrierung“.
    • PostAttributeCollection - entspricht "Vor dem Erstellen des Benutzers"
    • PreTokenIssuance - entspricht "Vor dem Senden des Tokens (Vorschau)". Weitere Informationen zu diesem Schritt
  • Client-ID ('client_id') – Der appId Wert der Anwendung, für die ein Endbenutzer sich in einem Benutzerablauf authentifiziert. Dabei handelt es sich nicht um den appId-Wert der Ressourcenanwendung in Zugriffstoken.
  • E-Mail-Adresse („email“) oder Identitäten („identities“): Diese Ansprüche können von Ihrer API zum Identifizieren des Endbenutzers verwendet werden, der sich bei der Anwendung authentifiziert.

Von Bedeutung

Wenn ein Anspruch zum Zeitpunkt des Aufrufs des API-Endpunkts keinen Wert enthält, wird der Anspruch nicht an die API gesendet. Ihre API sollte so entworfen sein, dass sie explizit den Fall überprüft und behandelt, bei dem eine Anspruch nicht in der Anforderung enthalten ist.

Aktivieren des API-Connectors in einem Benutzerablauf

Führen Sie die folgenden Schritte aus, um einem Registrierungsbenutzerablauf einen API-Connector hinzuzufügen.

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie unter Azure-DiensteAzure AD B2C aus.

  3. Wählen Sie Benutzerflows und dann den Benutzerflow aus, dem Sie den API-Connector hinzufügen möchten.

  4. Wählen Sie API-Connectors und dann die API-Endpunkte aus, die bei den folgenden Schritten im Benutzerflow aufgerufen werden sollen:

    • Nach dem Verbund mit einem Identitätsanbieter während der Registrierung
    • Vor dem Erstellen des Benutzers
    • Vor dem Senden des Tokens (Vorschau)

    Auswählen eines API-Connectors für einen Schritt im Benutzerablauf

  5. Wählen Sie Speichern aus.

Diese Schritte sind nur für die Registrierung und Anmeldung (empfohlen) und Registrierung (empfohlen) vorhanden, gelten jedoch nur für den Registrierungsteil der Erfahrung.

Nach dem Verbund mit einem Identitätsanbieter während der Registrierung

Ein API-Connector in diesem Schritt im Registrierungsprozess wird unmittelbar aufgerufen, nachdem sich der Benutzer bei einem Identitätsanbieter authentifiziert hat (z. B. Google, Facebook und Microsoft Entra ID). Dieser Schritt geht der Seite zur Attributsammlung voraus, die dem Benutzer zum Sammeln von Benutzerattributen angezeigt wird. Dieser Schritt wird nicht aufgerufen, wenn ein Benutzer sich mit einem lokalen Konto registriert.

In diesem Schritt an die API gesendete Beispielanforderung

POST <API-endpoint>
Content-type: application/json

{
 "email": "johnsmith@fabrikam.onmicrosoft.com",
 "identities": [ 
     {
     "signInType":"federated",
     "issuer":"facebook.com",
     "issuerAssignedId":"0123456789"
     }
 ],
 "displayName": "John Smith",
 "givenName":"John",
 "surname":"Smith",
 "step": "PostFederationSignup",
 "client_id":"<guid>",
 "ui_locales":"en-US"
}

Die genauen Ansprüche, die an die API gesendet werden, hängen von den Informationen ab, die vom Identitätsanbieter bereitgestellt werden. Der Anspruch „email“ wird immer gesendet.

Von der Web-API in diesem Schritt erwartete Antworttypen

Wenn die Web-API während eines Benutzerflows eine HTTP-Anforderung von Microsoft Entra ID empfängt, kann sie folgende Antworten zurückgeben:

  • Fortsetzungsantwort
  • Blockierungsantwort

Fortsetzungsantwort

Eine Fortsetzungsantwort bedeutet, dass der Benutzerfluss mit dem nächsten Schritt fortgesetzt werden soll: der Seite zur Attributsammlung.

In einer Fortsetzungsantwort kann die API Ansprüche zurückgeben. Wenn ein Anspruch von der API zurückgegeben wird, passiert mit dem Anspruch Folgendes:

  • Das Eingabefeld auf der Attributerfassungsseite wird vorab aufgefüllt.

Sehen Sie sich ein Beispiel für eine Fortsetzungsantwort an.

Blockierungsantwort

Eine Blockierungsantwort beendet den Benutzerflow. Sie kann von der API absichtlich ausgegeben werden, um die Fortsetzung des Benutzerflows zu beenden, indem für den Benutzer eine Blockierungsseite angezeigt wird. Auf der Blockierungsseite wird die von der API angegebene userMessage angezeigt.

Sehen Sie sich ein Beispiel für eine Blockierungsantwort an.

Vor dem Erstellen des Benutzers

Ein API-Connector in diesem Schritt des Registrierungsprozesses wird nach der Seite zur Attributsammlung aufgerufen, sofern vorhanden. Dieser Schritt wird immer aufgerufen, bevor ein Benutzerkonto erstellt wird.

In diesem Schritt an die API gesendete Beispielanforderung

POST <API-endpoint>
Content-type: application/json

{
 "email": "johnsmith@fabrikam.onmicrosoft.com",
 "identities": [
     {
     "signInType":"federated",
     "issuer":"facebook.com",
     "issuerAssignedId":"0123456789"
     }
 ],
 "displayName": "John Smith",
 "givenName":"John",
 "surname":"Smith",
 "jobTitle":"Supplier",
 "streetAddress":"1000 Microsoft Way",
 "city":"Seattle",
 "postalCode": "12345",
 "state":"Washington",
 "country":"United States",
 "extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
 "extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
 "step": "PostAttributeCollection",
 "client_id":"00001111-aaaa-2222-bbbb-3333cccc4444",
 "ui_locales":"en-US"
}

Die Ansprüche, die an die API gesendet werden, hängen von den Informationen ab, die vom Benutzer erfasst werden oder vom Identitätsanbieter bereitgestellt werden.

Von der Web-API in diesem Schritt erwartete Antworttypen

Wenn die Web-API während eines Benutzerflows eine HTTP-Anforderung von Microsoft Entra ID empfängt, kann sie folgende Antworten zurückgeben:

  • Fortsetzungsantwort
  • Blockierungsantwort
  • Überprüfungsantwort

Fortsetzungsantwort

Eine Fortsetzungsantwort gibt an, dass der Benutzerflow mit dem nächsten Schritt fortgesetzt werden soll: Erstellen des Benutzers im Verzeichnis.

In einer Fortsetzungsantwort kann die API Ansprüche zurückgeben. Wenn ein Anspruch von der API zurückgegeben wird, passiert mit dem Anspruch Folgendes:

  • Überschreibt alle Werte, die bereits von einem Benutzer auf der Attributauflistungsseite bereitgestellt wurden.

Um Ansprüche in das Verzeichnis bei der Registrierung zu schreiben, die nicht vom Benutzer erfasst werden sollen, sollten Sie weiterhin die Ansprüche unter "Benutzerattribute des Benutzerablaufs " auswählen, die den Benutzer standardmäßig um Werte bitten, aber Sie können benutzerdefiniertes JavaScript oder CSS verwenden, um die Eingabefelder eines Endbenutzers auszublenden.

Sehen Sie sich ein Beispiel für eine Fortsetzungsantwort an.

Blockierungsantwort

Eine Blockierungsantwort beendet den Benutzerflow. Sie kann von der API absichtlich ausgegeben werden, um die Fortsetzung des Benutzerflows zu beenden, indem für den Benutzer eine Blockierungsseite angezeigt wird. Auf der Blockierungsseite wird die von der API angegebene userMessage angezeigt.

Sehen Sie sich ein Beispiel für eine Blockierungsantwort an.

Validierungsfehlerantwort

Wenn die API mit einer Überprüfungsfehlerantwort antwortet, verbleibt der Benutzerfluss auf der Attributsammlungsseite und dem Benutzer wird ein userMessage angezeigt. Der Benutzer kann dann das Formular bearbeiten und erneut senden. Diese Antwort kann für die Eingabevalidierung verwendet werden.

Sehen Sie sich ein Beispiel für eine Validierungsfehlerantwort an.

Vor dem Senden des Tokens (Vorschau)

Von Bedeutung

API-Konnektoren, die in diesem Schritt verwendet werden, befinden sich in der Vorschau. Weitere Informationen zu Vorschauen finden Sie unter Produktbedingungen für Onlinedienste.

Ein API-Connector in diesem Schritt wird aufgerufen, wenn ein Token während der Anmeldungen und Registrierungen ausgestellt werden soll. Ein API-Connector für diesen Schritt kann verwendet werden, um das Token mit Anspruchswerten aus externen Quellen zu bereichern.

In diesem Schritt an die API gesendete Beispielanforderung

POST <API-endpoint>
Content-type: application/json

{
 "clientId": "11112222-bbbb-3333-cccc-4444dddd5555",
 "step": "PreTokenApplicationClaims",
 "ui_locales":"en-US",
 "email": "johnsmith@fabrikam.onmicrosoft.com",
 "identities": [
     {
     "signInType":"federated",
     "issuer":"facebook.com",
     "issuerAssignedId":"0123456789"
     }
 ],
 "displayName": "John Smith",
 "extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
 "extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
}

Die Ansprüche, die an die API gesendet werden, hängen von den für den Benutzer definierten Informationen ab.

Von der Web-API in diesem Schritt erwartete Antworttypen

Wenn die Web-API während eines Benutzerflows eine HTTP-Anforderung von Microsoft Entra ID empfängt, kann sie folgende Antworten zurückgeben:

  • Fortsetzungsantwort

Fortsetzungsantwort

Eine Fortsetzungsantwort gibt an, dass der Benutzerablauf mit dem nächsten Schritt fortgesetzt werden soll: Stellen Sie das Token aus.

In einer Fortsetzungsantwort kann die API zusätzliche Ansprüche zurückgeben. Ein anspruch, der von der API zurückgegeben wird, die Sie im Token zurückgeben möchten, muss ein integrierter Anspruch oder ein benutzerdefiniertes Attribut sein und muss in der Anwendungsanspruchskonfiguration des Benutzerablaufs ausgewählt werden.

Der Anspruchswert im Token ist der von der API zurückgegebene Wert, nicht der Wert im Verzeichnis. Einige Anspruchswerte können von der API-Antwort nicht überschrieben werden. Ansprüche, die von der API zurückgegeben werden können, entsprechen den Ansprüchen unter Benutzerattribute (mit Ausnahme von email).

Sehen Sie sich ein Beispiel für eine Fortsetzungsantwort an.

Hinweis

Die API wird nur während einer anfänglichen Authentifizierung aufgerufen. Wenn Sie Aktualisierungstoken verwenden, um still neue Zugriffs- oder ID-Token zu erhalten, enthält das Token die Werte, die während der anfänglichen Authentifizierung ausgewertet wurden.

Beispielantworten

Beispiel für eine Fortsetzungsantwort

HTTP/1.1 200 OK
Content-type: application/json

{
    "version": "1.0.0",
    "action": "Continue",
    "postalCode": "12349", // return claim
    "extension_<extensions-app-id>_CustomAttribute": "value" // return claim
}
Parameter Typ Erforderlich BESCHREIBUNG
Version Schnur Ja Die Version Ihrer API
Aktion Schnur Ja Der Wert muss Continue sein.
<integriertesBenutzerattribut> <Attributtyp> Nein Zurückgegebene Werte können Werte überschreiben, die von einem Benutzer gesammelt wurden.
<extension_{extensions-app-id}_benutzerdefiniertesAttribut> <Attributtyp> Nein Der Anspruch muss _<extensions-app-id>_ nicht enthalten sein, es ist optional. Zurückgegebene Werte können Werte überschreiben, die von einem Benutzer gesammelt wurden.

Beispiel für eine Blockierungsantwort

HTTP/1.1 200 OK
Content-type: application/json

{
    "version": "1.0.0",
    "action": "ShowBlockPage",
    "userMessage": "There was a problem with your request. You are not able to sign up at this time. Please contact your system administrator",
}

Parameter Typ Erforderlich BESCHREIBUNG
Version Schnur Ja Die Version Ihrer API
Aktion Schnur Ja Der Wert muss ShowBlockPage sein.
Benutzernachricht Schnur Ja Meldung, die dem Benutzer angezeigt wird.

Endbenutzererfahrung mit einer Blockierungsantwort

Beispiel für eine Blockierungsantwort

Beispiel für eine Validierungsfehlerantwort

HTTP/1.1 400 Bad Request
Content-type: application/json

{
    "version": "1.0.0",
    "status": 400,
    "action": "ValidationError",
    "userMessage": "Please enter a valid Postal Code."
}
Parameter Typ Erforderlich BESCHREIBUNG
Version Schnur Ja Die Version Ihrer API
Aktion Schnur Ja Der Wert muss ValidationError sein.
Zustand Integer / Zeichenkette Ja Für eine Validierungsfehlerantwort muss der Wert 400 oder "400" sein.
Benutzernachricht Schnur Ja Meldung, die dem Benutzer angezeigt wird.

Hinweis

Der HTTP-Statuscode muss „400“ lauten, und der Antworttext muss den Wert „status“ enthalten.

Anzeige einer Validierungsfehlerantwort für den Endbenutzende

Beispiel für eine Überprüfungsfehlerantwort

Vorbereiten eines REST-API-Endpunkts

Für diese exemplarische Vorgehensweise sollten Sie über eine REST-API verfügen, die überprüft, ob eine E-Mail-Adresse in Ihrem Back-End-System mit einer Treue-ID registriert ist. Bei der Registrierung sollte die REST-API einen Registrierungsaktionscode zurückgeben, den der Kunde zum Kauf von Waren innerhalb Ihrer Anwendung verwenden kann. Andernfalls sollte die REST-API eine HTTP 409-Fehlermeldung zurückgeben: "Treue-ID '{Treue-ID}' ist nicht mit der E-Mail-Adresse '{email}' verknüpft.".

Der folgende JSON-Code veranschaulicht die Daten, die Azure AD B2C an Ihren REST-API-Endpunkt senden.

{
    "email": "User email address",
    "language": "Current UI language",
    "loyaltyId": "User loyalty ID"
}

Nachdem Ihre REST-API die Daten überprüft hat, muss sie einen HTTP 200 (OK) mit den folgenden JSON-Daten zurückgeben:

{
    "promoCode": "24534"
}

Wenn die Überprüfung fehlgeschlagen ist, muss die REST-API einen HTTP 409 (Conflict) mit dem userMessage JSON-Element zurückgeben. Das IEF erwartet die userMessage Anforderung, die die REST-API zurückgibt. Dieser Anspruch wird dem Benutzer als Zeichenfolge angezeigt, wenn die Überprüfung fehlschlägt.

{
    "version": "1.0.1",
    "status": 409,
    "userMessage": "LoyaltyId ID '1234' is not associated with 'david@contoso.com' email address."
}

Das Setup des REST-API-Endpunkts liegt außerhalb des Umfangs dieses Artikels. Wir haben ein Azure Functions-Beispiel erstellt. Sie können auf den vollständigen Azure-Funktionscode auf GitHub zugreifen.

Definieren von Ansprüchen

Ein Anspruch bietet eine temporäre Speicherung von Daten während der Ausführung einer Azure AD B2C-Richtlinie. Sie können Ansprüche im Abschnitt "Anspruchsschema " deklarieren.

  1. Öffnen Sie die Erweiterungsdatei Ihrer Richtlinie. Beispiel: SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Suchen Sie nach dem BuildingBlocks-Element . Wenn das Element nicht vorhanden ist, fügen Sie es hinzu.
  3. Suchen Sie das ClaimsSchema-Element . Wenn das Element nicht vorhanden ist, fügen Sie es hinzu.
  4. Fügen Sie dem ClaimsSchema-Element die folgenden Ansprüche hinzu.
<ClaimType Id="loyaltyId">
  <DisplayName>Your loyalty ID</DisplayName>
  <DataType>string</DataType>
  <UserInputType>TextBox</UserInputType>
</ClaimType>
<ClaimType Id="promoCode">
  <DisplayName>Your promo code</DisplayName>
  <DataType>string</DataType>
  <UserInputType>Paragraph</UserInputType>
</ClaimType>
  <ClaimType Id="userLanguage">
  <DisplayName>User UI language (used by REST API to return localized error messages)</DisplayName>
  <DataType>string</DataType>
</ClaimType>

Hinzufügen des technischen Profils der RESTful-API

Ein RESTful-technisches Profil bietet Unterstützung für die Interoperabilität mit Ihrem eigenen RESTful-Dienst. Azure AD B2C sendet Daten an den RESTful-Dienst in einer InputClaims Sammlung und empfängt Daten zurück in einer OutputClaims Sammlung. Suchen Sie das ClaimsProviders-Element , und fügen Sie einen neuen Anspruchsanbieter wie folgt hinzu:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-ValidateProfile">
      <DisplayName>Check loyaltyId Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <!-- Set the ServiceUrl with your own REST API endpoint -->
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/ValidateProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <!-- Set AuthenticationType to Basic or ClientCertificate in production environments -->
        <Item Key="AuthenticationType">None</Item>
        <!-- REMOVE the following line in production environments -->
        <Item Key="AllowInsecureAuthInProduction">true</Item>
      </Metadata>
      <InputClaims>
        <!-- Claims sent to your REST API -->
        <InputClaim ClaimTypeReferenceId="loyaltyId" />
        <InputClaim ClaimTypeReferenceId="email" />
        <InputClaim ClaimTypeReferenceId="userLanguage" PartnerClaimType="lang" DefaultValue="{Culture:LCID}" AlwaysUseDefaultValue="true" />
      </InputClaims>
      <OutputClaims>
        <!-- Claims parsed from your REST API -->
        <OutputClaim ClaimTypeReferenceId="promoCode" />
      </OutputClaims>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

In diesem Beispiel wird userLanguage innerhalb der JSON-Nutzlast als lang an den REST-Dienst gesendet. Der Wert des userLanguage Anspruchs enthält die aktuelle Benutzersprachen-ID. Weitere Informationen finden Sie unter Claim Resolver.

Konfigurieren des technischen PROFILs der RESTful-API

Legen Sie nach der Bereitstellung Der REST-API die Metadaten des REST-ValidateProfile technischen Profils so fest, dass sie Ihre eigene REST-API widerspiegeln, einschließlich:

  • ServiceUrl verwenden. Legen Sie die URL des REST-API-Endpunkts fest.
  • SendClaimsIn. Geben Sie an, wie die Eingabeansprüche an den RESTful-Anspruchsanbieter gesendet werden.
  • AuthenticationType. Legen Sie den Typ der Authentifizierung fest, die vom RESTful-Anspruchsanbieter ausgeführt wird.
  • AllowInsecureAuthInProduction. Sorgen Sie in einer Produktionsumgebung dafür, dass diese Metadaten auf true festgelegt werden.

Weitere Konfigurationen finden Sie in den METADATEN des RESTful-technischen Profils .

Die obigen AuthenticationType Kommentare und AllowInsecureAuthInProduction angeben Änderungen, die Sie vornehmen sollten, wenn Sie zu einer Produktionsumgebung wechseln. Informationen zum Sichern Ihrer RESTful-APIs für die Produktion finden Sie unter Secure RESTful API.

Überprüfen der Benutzereingabe

Um die Treuenummer des Benutzers während der Registrierung zu erhalten, müssen Sie dem Benutzer erlauben, diese Daten auf dem Bildschirm einzugeben. Fügen Sie den Ausgabeanspruch loyaltyId zur Anmeldeseite hinzu, indem Sie ihn dem Element OutputClaims des bestehenden technischen Registrierungsprofilabschnitts hinzufügen. Geben Sie die gesamte Liste der Ausgabeansprüche an, um die Reihenfolge zu steuern, in der die Ansprüche auf dem Bildschirm angezeigt werden.

Fügen Sie den Verweis auf das technische Überprüfungsprofil dem technischen Profil für die Registrierung hinzu, das REST-ValidateProfile aufruft. Das neue technische Profil der Validierung wird am Anfang der in der Grundrichtlinie definierten <ValidationTechnicalProfiles> Sammlung hinzugefügt. Dieses Verhalten bedeutet, dass Azure AD B2C erst nach erfolgreicher Überprüfung das Konto im Verzeichnis erstellt.

  1. Suchen Sie das ClaimsProviders-Element . Fügen Sie einen neuen Anspruchsanbieter wie folgt hinzu:

    <ClaimsProvider>
      <DisplayName>Local Account</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Verified.Email" Required="true"/>
            <OutputClaim ClaimTypeReferenceId="newPassword" Required="true"/>
            <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true"/>
            <OutputClaim ClaimTypeReferenceId="displayName"/>
            <OutputClaim ClaimTypeReferenceId="givenName"/>
            <OutputClaim ClaimTypeReferenceId="surName"/>
            <!-- Required to present the text box to collect the data from the user -->
            <OutputClaim ClaimTypeReferenceId="loyaltyId"/>
            <!-- Required to pass the promoCode returned from "REST-ValidateProfile" 
            to subsequent orchestration steps and token issuance-->
            <OutputClaim ClaimTypeReferenceId="promoCode" />
          </OutputClaims>
          <ValidationTechnicalProfiles>
            <ValidationTechnicalProfile ReferenceId="REST-ValidateProfile" />
          </ValidationTechnicalProfiles>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    <ClaimsProvider>
      <DisplayName>Self Asserted</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="SelfAsserted-Social">
          <InputClaims>
            <InputClaim ClaimTypeReferenceId="email" />
          </InputClaims>
            <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="email" />
            <OutputClaim ClaimTypeReferenceId="displayName"/>
            <OutputClaim ClaimTypeReferenceId="givenName"/>
            <OutputClaim ClaimTypeReferenceId="surname"/>
            <!-- Required to present the text box to collect the data from the user -->
            <OutputClaim ClaimTypeReferenceId="loyaltyId"/>
            <!-- Required to pass the promoCode returned from "REST-ValidateProfile" 
            to subsequent orchestration steps and token issuance-->
            <OutputClaim ClaimTypeReferenceId="promoCode" />
          </OutputClaims>
          <ValidationTechnicalProfiles>
            <ValidationTechnicalProfile ReferenceId="REST-ValidateProfile"/>
          </ValidationTechnicalProfiles>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Einschließen eines Anspruchs in das Token

Um den Anspruch „Aktionscode“ an die Anwendung der vertrauenden Seite zurückzugeben, fügen Sie der Datei „SocialAndLocalAccounts/SignUpOrSignIn.xml“ einen Ausgabeanspruch hinzu. Der Ausgabeanspruch ermöglicht es, den Anspruch nach einer erfolgreichen User Journey in das Token einzufügen, der dann an die Anwendung gesendet wird. Ändern Sie im Abschnitt für die vertrauende Seite das Element des technischen Profils, um promoCode als Ausgabeanspruch hinzuzufügen.

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
      <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
      <OutputClaim ClaimTypeReferenceId="promoCode" DefaultValue="" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

Testen der benutzerdefinierten Richtlinie

  1. Melden Sie sich beim Azure-Portal an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie im oberen Menü das Symbol "Einstellungen " aus, um im Menü "Verzeichnisse + Abonnements " zu Ihrem Microsoft Entra ID-Mandanten zu wechseln.
  3. Wählen Sie "Alle Dienste " in der oberen linken Ecke des Azure-Portals aus, und suchen Sie dann nach App-Registrierungen, und wählen Sie sie aus.
  4. Wählen Sie "Identity Experience Framework" aus.
  5. Wählen Sie " Benutzerdefinierte Richtlinie hochladen" aus, und laden Sie dann die geänderten Richtliniendateien hoch: TrustFrameworkExtensions.xmlund SignUpOrSignin.xml.
  6. Wählen Sie die Registrierungs- oder Anmelderichtlinie aus, die Sie hochgeladen haben, und klicken Sie auf die Schaltfläche " Jetzt ausführen ".
  7. Sie sollten sich mit einer E-Mail-Adresse registrieren können.
  8. Klicken Sie auf den Link "Jetzt registrieren ".
  9. Geben Sie in der Treue-ID "1234" ein, und klicken Sie auf "Weiter". An diesem Punkt sollten Sie eine Fehlermeldung zur Überprüfung erhalten.
  10. Wechseln Sie zu einem anderen Wert, und klicken Sie auf "Weiter".
  11. Das an Ihre Anwendung zurückgesendete Token enthält den promoCode Claim.
{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
  "exp": 1584295703,
  "nbf": 1584292103,
  "ver": "1.0",
  "iss": "https://contoso.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/",
  "aud": "22223333-cccc-4444-dddd-5555eeee6666",
  "acr": "b2c_1a_signup_signin",
  "nonce": "defaultNonce",
  "iat": 1584292103,
  "auth_time": 1584292103,
  "name": "Emily Smith",
  "email": "emily@outlook.com",
  "given_name": "Emily",
  "family_name": "Smith",
  "promoCode": "84362"
  ...
}

Bewährte Methoden und Problembehandlungen

Verwenden von serverlosen Cloudfunktionen

Serverlose Funktionen (z. B. HTTP-Trigger in Azure Functions) bieten eine Möglichkeit zum Erstellen von API-Endpunkten, die mit dem API-Connector verwendet werden. Sie können die serverlosen Cloudfunktionen beispielsweise verwenden, um Validierungslogik auszuführen und Registrierungen auf bestimmte E-Mail-Domänen zu beschränken. Mit den serverlosen Cloudfunktionen können auch andere Web-APIs, Datenspeicher und andere Clouddienste für komplexere Szenarien aufgerufen werden.

Bewährte Methoden

Stellen Sie Folgendes sicher:

  • Ihre API entspricht den API-Anforderungs- und -Antwortverträgen, wie dies weiter oben beschrieben ist.
  • Die Endpunkt-URL des API-Connectors verweist auf den richtigen API-Endpunkt.
  • In Ihrer API wird explizit auf NULL-Werte der empfangenen notwendigen Ansprüche geprüft.
  • Ihre API implementiert eine Authentifizierungsmethode, die unter Schützen Ihres API-Connectors beschrieben ist.
  • Ihre API antwortet so schnell wie möglich, um eine flüssige Darstellung für den Benutzer zu gewährleisten.
    • Azure AD B2C wartet maximal 10 Sekunden , um eine Antwort zu erhalten. Wird keine empfangen, wird ein weiterer Versuch (Wiederholung) unternommen, die API aufzurufen.
    • Wenn Sie eine serverlose Funktion oder einen skalierbaren Webdienst verwenden, wählen Sie in der Produktion einen Hostingplan, der dafür sorgt, dass die API „wach“ oder „warm“ bleibt. Für Azure Functions wird empfohlen, mindestens den Premium-Plan in der Produktion zu verwenden.
  • Stellen Sie die Hochverfügbarkeit Ihrer API sicher.
  • Überwachen und optimieren Sie die Leistung von nachgelagerten APIs, Datenbanken oder anderen Abhängigkeiten Ihrer API.

Von Bedeutung

Ihre Endpunkte müssen die Azure AD B2C-Sicherheitsanforderungen erfüllen. Ältere TLS-Versionen und Verschlüsselungen sind veraltet. Weitere Informationen finden Sie unter Azure AD B2C TLS- und Verschlüsselungssuiteanforderungen.

Verwenden von Protokollierung

Üblicherweise ist es nützlich, die von Ihrem Web-API-Dienst aktivierten Protokollierungstools, etwa Application Insights, zu verwenden, um Ihre API auf unerwartete Fehlercodes, Ausnahmen und schlechte Leistung zu überwachen.

  • Überwachen Sie auf HTTP-Statuscodes, die weder HTTP 200 noch 400 sind.
  • Der HTTP-Statuscode 401 oder 403 kennzeichnet in der Regel, dass ein Problem mit Ihrer Authentifizierung vorliegt. Überprüfen Sie die Authentifizierungsschicht Ihrer API und die entsprechende Konfiguration im API-Connector.
  • Verwenden Sie bei Bedarf in der Entwicklung aggressivere Protokollierungsebenen (z. B. „trace“ oder „debug“).
  • Überwachen Sie Ihre API hinsichtlich langer Antwortzeiten.

Darüber hinaus protokolliert Azure AD B2C Metadaten zu den API-Transaktionen, die während der Benutzerauthentifizierung über einen Benutzerablauf auftreten. Um diese zu finden:

  1. Wechseln Sie zu Azure AD B2C.
  2. Wählen Sie unter "Aktivitäten" die Option "Überwachungsprotokolle" aus.
  3. Filtern Sie die Listenansicht: Wählen Sie für "Datum" das gewünschte Zeitintervall aus, und wählen Sie für "Aktivität" eine API aus, die als Teil eines Benutzerablaufs aufgerufen wurde.
  4. Prüfen Sie einzelne Protokolle. Jede Zeile stellt einen API-Connector dar, der versucht, während eines Benutzerablaufs aufgerufen zu werden. Wenn ein API-Aufruf fehlschlägt und ein Wiederholungsversuch durchgeführt wird, wird er weiterhin als einzelne Zeile dargestellt. Dies numberOfAttempts gibt an, wie oft Ihre API aufgerufen wurde. Dieser Wert kann sein 1oder 2. Weitere Informationen zum API-Aufruf finden Sie in den Protokollen.

Beispiel für eine API-Connectortransaktion während der Benutzerauthentifizierung

Verwenden von serverlosen Cloudfunktionen

Serverlose Cloudfunktionen, z. B. HTTP-Trigger in Azure-Funktionen, bieten eine einfache, hochverwendbare, leistungsfähige Möglichkeit zum Erstellen von API-Endpunkten, die als API-Connectors verwendet werden.

Bewährte Methoden

Stellen Sie Folgendes sicher:

  • In Ihrer API wird explizit auf NULL-Werte der empfangenen notwendigen Ansprüche geprüft.
  • Ihre API implementiert eine Authentifizierungsmethode, die unter Schützen Ihres API-Connectors beschrieben ist.
  • Ihre API antwortet so schnell wie möglich, um eine flüssige Darstellung für den Benutzer zu gewährleisten.
    • Wenn Sie eine serverlose Funktion oder einen skalierbaren Webdienst verwenden, wählen Sie in der Produktion einen Hostingplan, der dafür sorgt, dass die API „wach“ oder „warm“ bleibt. Für Azure Functions wird zumindest die Verwendung des Premium-Plans empfohlen.
  • Stellen Sie die Hochverfügbarkeit Ihrer API sicher.
  • Überwachen und optimieren Sie die Leistung von nachgelagerten APIs, Datenbanken oder anderen Abhängigkeiten Ihrer API.

Von Bedeutung

Ihre Endpunkte müssen die Azure AD B2C-Sicherheitsanforderungen erfüllen. Ältere TLS-Versionen und Verschlüsselungen sind veraltet. Weitere Informationen finden Sie unter Azure AD B2C TLS- und Verschlüsselungssuiteanforderungen.

Verwenden von Protokollierung

Üblicherweise ist es nützlich, die von Ihrem Web-API-Dienst aktivierten Protokollierungstools, etwa Application Insights, zu verwenden, um Ihre API auf unerwartete Fehlercodes, Ausnahmen und schlechte Leistung zu überwachen.

  • Überwachen Sie auf HTTP-Statuscodes, die weder HTTP 200 noch 400 sind.
  • Der HTTP-Statuscode 401 oder 403 kennzeichnet in der Regel, dass ein Problem mit Ihrer Authentifizierung vorliegt. Überprüfen Sie die Authentifizierungsschicht Ihrer API und die entsprechende Konfiguration im API-Connector.
  • Verwenden Sie bei Bedarf in der Entwicklung aggressivere Protokollierungsebenen (z. B. „trace“ oder „debug“).
  • Überwachen Sie Ihre API hinsichtlich langer Antwortzeiten.

Nächste Schritte