Sichern von APIs, die als API-Connectors in Azure AD B2C verwendet werden

Wenn Sie eine REST-API in einen Azure AD B2C-Benutzerflow integrieren, müssen Sie Ihren REST-API-Endpunkt mittels Authentifizierung schützen. Durch diese REST-API-Authentifizierung wird sichergestellt, dass nur Dienste mit richtigen Anmeldeinformationen, wie z. B. Azure AD B2C, Aufrufe an Ihren Endpunkt tätigen können. In diesem Artikel erfahren Sie, wie Sie die REST-API schützen können.

Voraussetzungen

Führen Sie die Schritte im Leitfaden Hinzufügen eines API-Connectors zu einem Benutzerflow für die Registrierung aus.

Sie können Ihren API-Endpunkt entweder mithilfe der HTTP-Standardauthentifizierung oder mithilfe der HTTPS-Clientzertifikatauthentifizierung schützen. In beiden Fällen müssen Sie die Anmeldeinformationen angeben, die Azure AD B2C beim Aufrufen Ihres API-Endpunkts verwendet. Der API-Endpunkt überprüft dann die Anmeldeinformationen und führt Autorisierungsentscheidungen aus.

HTTP-Standardauthentifizierung

Die HTTP-Standardauthentifizierung ist in RFC 2617 definiert. Die Standardauthentifizierung funktioniert wie folgt:

  • Azure AD B2C sendet eine HTTP-Anforderung mit den Clientanmeldeinformationen (username und password) im Header Authorization.

  • Die Anmeldeinformationen werden als Base64-codierte Zeichenfolge im Format username:password angegeben.

  • Ihre API ist dann für die Überprüfung dieser Werte verantwortlich, um andere Autorisierungsentscheidungen zu treffen.

Führen Sie die folgenden Schritte aus, um einen API-Connector mit HTTP-Standardauthentifizierung zu konfigurieren:

  1. Melden Sie sich beim Azure-Portal an.
  2. Wählen Sie unter Azure-Dienste die Option Azure AD B2C aus, oder suchen Sie nach dem Eintrag Azure AD B2C, und wählen Sie diesen aus.
  3. Wählen Sie API-Connectors und dann den zu konfigurierenden API-Connector aus.
  4. Wählen Sie als Authentifizierungstyp die Option Standard aus.
  5. Geben Sie den Benutzernamen und das Kennwort für Ihren REST-API-Endpunkt an. Providing basic authentication configuration for an API connector.
  6. Wählen Sie Speichern aus.

Hinzufügen von Richtlinienschlüsseln für REST-API-Benutzernamen und -Kennwörter

Um ein technisches REST-API-Profil mit HTTP-Standardauthentifizierung zu konfigurieren, müssen Sie die folgenden kryptografischen Schlüssel zum Speichern des Benutzernamens und des Kennworts erstellen:

  1. Melden Sie sich beim Azure-Portal an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
  3. Wählen Sie links oben im Azure-Portal die Option Alle Dienste aus, suchen Sie nach Azure AD B2C, und wählen Sie dann diese Option aus.
  4. Wählen Sie auf der Seite „Übersicht“ die Option Framework für die Identitätsfunktion aus.
  5. Wählen Sie Richtlinienschlüssel aus, und wählen Sie dann Hinzufügen aus.
  6. Wählen Sie unter Optionen den Eintrag Manuell aus.
  7. Geben Sie im Feld Name die Zeichenfolge RestApiUsername ein. Das Präfix B2C_1A_ wird möglicherweise automatisch hinzugefügt.
  8. Geben Sie im Feld Geheimnis den REST-API-Benutzernamen ein.
  9. Wählen Sie für Schlüsselverwendung die Option Verschlüsselung aus.
  10. Klicken Sie auf Erstellen.
  11. Wählen Sie erneut Richtlinienschlüssel aus.
  12. Wählen Sie Hinzufügen.
  13. Wählen Sie unter Optionen den Eintrag Manuell aus.
  14. Geben Sie im Feld Name die Zeichenfolge RestApiPassword ein. Das Präfix B2C_1A_ wird möglicherweise automatisch hinzugefügt.
  15. Geben Sie im Feld Geheimnis das REST-API-Kennwort ein.
  16. Wählen Sie für Schlüsselverwendung die Option Verschlüsselung aus.
  17. Klicken Sie auf Erstellen.

Konfigurieren Ihres technischen REST-API-Profils für die Verwendung der HTTP-Standardauthentifizierung

Konfigurieren Sie nach dem Erstellen der erforderlichen Schlüssel die Metadaten Ihres technischen REST-API-Profils so, dass sie auf die Anmeldeinformationen verweisen.

  1. Öffnen Sie in Ihrem Arbeitsverzeichnis die Erweiterungsrichtliniendatei („TrustFrameworkExtensions.xml“).
  2. Suchen Sie das technische REST-API-Profil. Beispiel: REST-ValidateProfile oder REST-GetProfile.
  3. Suchen Sie das <Metadata>-Element.
  4. Ändern Sie den Authentifizierungstyp (AuthenticationType) in Basic.
  5. Ändern Sie den Wert von AllowInsecureAuthInProduction in false.
  6. Fügen Sie den folgenden XML-Codeausschnitt unmittelbar hinter dem schließenden </Metadata>-Element hinzu:
    <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
    </CryptographicKeys>
    

Nachfolgend finden Sie einen XML-Codeausschnitt als Beispiel für ein mit der HTTP-Standardauthentifizierung konfiguriertes technisches RESTful-Profi:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile 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>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Basic</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

HTTPS-Clientzertifikatauthentifizierung

Bei der Clientzertifikatauthentifizierung handelt es sich um eine gegenseitige zertifikatbasierte Authentifizierung, bei der der Client (Azure AD B2C) sein Clientzertifikat für den Server bereitstellt, um seine Identität nachzuweisen. Dies erfolgt im Rahmen des SSL-Handshakes. Ihre API muss überprüfen, ob die Zertifikate zu einem gültigen Client (beispielsweise Azure AD B2C) gehören, und Autorisierungsentscheidungen treffen. Bei dem Clientzertifikat handelt es sich um ein digitales X.509-Zertifikat.

Wichtig

In Produktionsumgebungen muss das Zertifikat von einer Zertifizierungsstelle signiert werden.

Erstellen eines Zertifikats

Zum Erstellen eines Zertifikats können Sie den Azure Key Vault verwenden, der über Optionen für selbstsignierte Zertifikate und Integrationen mit Zertifikatausstelleranbietern für signierte Zertifikate verfügt. Empfohlene Einstellungen umfassen:

  • Betreff: CN=<yourapiname>.<tenantname>.onmicrosoft.com
  • Inhaltstyp: PKCS #12
  • Gültigkeitsdauer Aktionstyp: Email all contacts at a given percentage lifetime oder Email all contacts a given number of days before expiry
  • Schlüsseltyp: RSA
  • Schlüsselgröße: 2048
  • Exportierbarer privater Schlüssel: Yes (um die Datei vom Typ .pfx exportieren zu können)

Sie können dann das Zertifikat exportieren.

Option 2: Vorbereiten eines selbstsignierten Zertifikats per PowerShell-Modul

Wenn Sie noch nicht über ein Zertifikat verfügen, können Sie ein selbstsigniertes Zertifikat verwenden. Ein selbstsigniertes Zertifikat ist ein Sicherheitszertifikat, das nicht von einer Zertifizierungsstelle (ZS) signiert ist und nicht die Sicherheitsgarantien eines Zertifikats bietet, das von einer Zertifizierungsstelle signiert wurde.

Verwenden Sie unter Windows das PowerShell-Cmdlet New-SelfSignedCertificate, um ein Zertifikat zu generieren.

  1. Führen Sie den folgenden PowerShell-Befehl aus, um ein selbstsigniertes Zertifikat zu generieren. Ändern Sie das Argument -Subject entsprechend Ihrer Anwendung und dem Azure AD B2C-Mandantennamen, z. B. contosowebapp.contoso.onmicrosoft.com. Sie können auch das -NotAfter-Datum anpassen, um einen anderen Ablaufzeitpunkt für das Zertifikat anzugeben.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. Suchen Sie auf dem Windows-Computer nach Benutzerzertifikate verwalten und wählen Sie

  3. Wählen Sie unter Zertifikate - Aktueller Benutzer die Option Persönlich>Zertifikate>IhrAnwendungsname.ihrmieter.onmicrosoft.com.

  4. Wählen Sie das Zertifikat und dann Aktion>Alle Aufgaben>Exportieren aus.

  5. Wählen Sie Weiter>Ja, den privaten Schlüssel exportieren>Weiter.

  6. Übernehmen Sie die Standardeinstellungen für Exportdateiformat, und wählen Sie dann Weiter.

  7. Aktivieren Sie die Option Passwort, geben Sie ein Passwort für das Zertifikat ein, und wählen Sie dann Weiter.

  8. Um einen Speicherort für Ihr Zertifikat anzugeben, wählen Sie Durchsuchen und navigieren Sie zu einem Verzeichnis Ihrer Wahl.

  9. Geben Sie im Fenster Speichern unter einen Dateinamen ein, und wählen Sie dann Speichern.

  10. Wählen Sie Weiter>Fertig stellen aus.

Damit das Kennwort für die PFX-Datei in Azure AD B2C akzeptiert wird, muss es statt mit „AES256-SHA256“ mit der Option „TripleDES-SHA1“ im Exporthilfsprogramm des Windows-Zertifikatspeichers verschlüsselt werden.

Konfigurieren Ihres API-Connectors

Führen Sie die folgenden Schritte aus, um einen API-Connector mit Authentifizierung über ein Clientzertifikat zu konfigurieren:

  1. Melden Sie sich beim Azure-Portal an.
  2. Wählen Sie unter Azure-Dienste die Option Azure AD B2C aus.
  3. Wählen Sie API-Connectors und dann den zu konfigurierenden API-Connector aus.
  4. Wählen Sie als Authentifizierungstyp die Option Zertifikat aus.
  5. Wählen Sie im Feld Zertifikat hochladen die PFX-Datei Ihres Zertifikats mit einem privaten Schlüssel aus.
  6. Geben Sie im Feld Kennwort eingeben das Kennwort des Zertifikats ein. Providing certificate authentication configuration for an API connector.
  7. Wählen Sie Speichern aus.

Treffen von Autorisierungsentscheidungen

Ihre API muss die Autorisierung basierend auf gesendeten Client-Zertifikaten implementieren, um die API-Endpunkte zu schützen. Für den Azure App Service und die Azure Funktionen finden Sie unter Konfigurieren der gegenseitigen TLS-Authentifizierung Informationen zum Aktivieren und Validieren des Zertifikats über Ihren API-Code. Alternativ können Sie Azure API Management als Ebene vor einem beliebigen API-Dienst verwenden, um Clientzertifikateigenschaften auf gewünschte Werte zu überprüfen.

Erneuern von Zertifikaten

Es wird empfohlen, Erinnerungswarnungen für den Zeitpunkt festzulegen, an dem das Zertifikat abläuft. Wenn die verwendeten Zertifikate bald ablaufen, müssen Sie ein neues Zertifikat generieren und die obigen Schritte wiederholen. Für den Übergang zu einem neuen Zertifikat kann Ihr API-Dienst während der Bereitstellung des neuen Zertifikats vorübergehend alte und neue Zertifikate akzeptieren.

Um ein neues Zertifikat in einen bestehenden API-Anschluss hochzuladen, wählen Sie den API-Anschluss unter API-Anschlüsse aus und klicken Sie auf Neues Zertifikat hochladen. Von Azure AD B2C wird automatisch das zuletzt hochgeladene Zertifikat verwendet, das nicht abgelaufen ist und dessen Startdatum in der Vergangenheit liegt.

Providing a new certificate to an API connector when one already exists.

Hinzufügen eines Richtlinienschlüssels für das Clientzertifikat

  1. Melden Sie sich beim Azure-Portal an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
  3. Wählen Sie links oben im Azure-Portal die Option Alle Dienste aus, suchen Sie nach Azure AD B2C, und wählen Sie dann diese Option aus.
  4. Wählen Sie auf der Seite „Übersicht“ die Option Framework für die Identitätsfunktion aus.
  5. Wählen Sie Richtlinienschlüssel aus, und wählen Sie dann Hinzufügen aus.
  6. Wählen Sie im Feld Optionen die Option Upload aus.
  7. Geben Sie im Feld Name die Zeichenfolge RestApiClientCertificate ein. Das Präfix B2C_1A_ wird automatisch hinzugefügt.
  8. Wählen Sie im Feld Dateiupload die PFX-Datei Ihres Zertifikats mit dem privaten Schlüssel aus.
  9. Geben Sie im Feld Kennwort das Kennwort des Zertifikats ein.
  10. Klicken Sie auf Erstellen.

Konfigurieren Ihres technischen REST-API-Profils für die Verwendung der Clientzertifikatauthentifizierung

Konfigurieren Sie nach dem Erstellen des erforderlichen Schlüssels die Metadaten Ihres technischen REST-API-Profils so, dass sie auf das Clientzertifikat verweisen.

  1. Öffnen Sie in Ihrem Arbeitsverzeichnis die Erweiterungsrichtliniendatei („TrustFrameworkExtensions.xml“).
  2. Suchen Sie das technische REST-API-Profil. Beispiel: REST-ValidateProfile oder REST-GetProfile.
  3. Suchen Sie das <Metadata>-Element.
  4. Ändern Sie den Authentifizierungstyp (AuthenticationType) in ClientCertificate.
  5. Ändern Sie den Wert von AllowInsecureAuthInProduction in false.
  6. Fügen Sie den folgenden XML-Codeausschnitt unmittelbar hinter dem schließenden </Metadata>-Element hinzu:
    <CryptographicKeys>
       <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
    </CryptographicKeys>
    

Nachfolgend finden Sie einen XML-Codeausschnitt als Beispiel für ein mit einem HTTP-Clientzertifikat konfiguriertes technisches RESTful-Profi:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile 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>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ClientCertificate</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

OAuth2-Bearerauthentifizierung

Die Definition der Bearertokenauthentifizierung finden Sie unter OAuth2.0 Authorization Framework: Verwendung von Bearertoken (RFC 6750). Bei der Bearertokenauthentifizierung sendet Azure AD B2C eine HTTP-Anforderung mit einem Token im Autorisierungsheader.

Authorization: Bearer <token>

Ein Bearertoken ist eine nicht transparente Zeichenfolge. Dabei kann es sich um ein JWT-Zugriffstoken oder eine beliebige Zeichenfolge handeln, von dem/der die REST-API erwartet, dass es/sie von Azure AD B2C im Autorisierungsheader gesendet wird. Azure AD B2C unterstützt die folgenden Typen:

  • Bearertoken. Damit das Bearertoken im technischen RESTful-Profil gesendet werden kann, muss Ihre Richtlinie das Bearertoken zuerst abrufen und dann im technischen RESTful-Profil verwenden.
  • Statisches Bearertoken. Verwenden Sie diesen Ansatz, wenn Ihre REST-API ein langfristiges Zugriffstoken ausgibt. Wenn Sie ein statisches Bearertoken verwenden möchten, müssen Sie einen Richtlinienschlüssel und dann einen Verweis vom technischen RESTful-Profil auf Ihren Richtlinienschlüssel erstellen.

Verwenden eines OAuth2-Bearertokens

In den folgenden Schritten wird veranschaulicht, wie Sie mithilfe von Clientanmeldeinformationen ein Bearertoken abrufen und es im Autorisierungsheader der REST-API-Aufrufe übergeben.

Definieren eines Anspruchs zum Speichern des Bearertokens

Ein Anspruch ermöglicht die temporäre Speicherung von Daten während der Ausführung einer Azure AD B2C-Richtlinie. Im Anspruchsschema deklarieren Sie Ihre Ansprüche. Das Zugriffstoken muss in einem Anspruch gespeichert werden, um später verwendet werden zu können.

  1. Öffnen Sie die Erweiterungsdatei Ihrer Richtlinie. Beispiel: SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Suchen Sie nach dem Element BuildingBlocks. Wenn das Element nicht vorhanden ist, fügen Sie es hinzu.
  3. Suchen Sie nach dem Element ClaimsSchema. Wenn das Element nicht vorhanden ist, fügen Sie es hinzu.
  4. Fügen Sie dem Element ClaimsSchema die folgenden Ansprüche hinzu.
<ClaimType Id="bearerToken">
  <DisplayName>Bearer token</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="grant_type">
  <DisplayName>Grant type</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="scope">
  <DisplayName>scope</DisplayName>
  <DataType>string</DataType>
</ClaimType>

Abrufen eines Zugriffstokens

Sie können ein Zugriffstoken auf eine von mehreren Arten abrufen: durch Abrufen des Tokens von einem Verbundidentitätsanbieter, durch Aufrufen einer REST-API, die ein Zugriffstoken zurückgibt, mithilfe eines ROPC-Flows oder mithilfe des Clientanmeldeinformationsflows. Der Clientanmeldeinformationsflow wird häufig für Interaktionen zwischen Servern verwendet, die ohne Benutzereingriff im Hintergrund ausgeführt werden müssen.

Abrufen eines Microsoft Entra-Zugriffstokens

Im folgenden Beispiel wird ein technisches REST-API-Profil verwendet, um eine Anforderung an den Microsoft Entra-Tokenendpunkt zu senden, wobei die Clientanmeldeinformationen als HTTP-Standardauthentifizierung verwendet werden. Weitere Informationen finden Sie unter Microsoft Identity Platform und der Fluss von OAuth 2.0-Clientanmeldeinformationen.

Bevor das technische Profil mit Microsoft Entra ID interagieren kann, um ein Zugriffstoken abzurufen, müssen Sie eine Anwendung registrieren. Azure AD B2C benötigt die Microsoft Entra-Plattform. Sie können die App in Ihrem Azure AD B2C-Mandanten oder in einem beliebigen Microsoft Entra-Mandanten erstellen, den Sie verwalten. So registrieren Sie eine Anwendung

  1. Melden Sie sich beim Azure-Portal an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
  3. Wählen Sie im linken Menü Microsoft Entra ID aus. Oder wählen Sie Alle Dienste aus, und suchen Sie nach Microsoft Entra ID, und wählen Sie sie aus.
  4. Wählen Sie App-Registrierungen aus, und wählen Sie dann Registrierung einer neuen Anwendung aus.
  5. Geben Sie unter Name einen Namen für die Anwendung ein. Beispiel: Client_Credentials_Auth_app.
  6. Wählen Sie unter Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis aus.
  7. Wählen Sie Registrieren.
  8. Notieren Sie sich die Anwendungs-ID (Client) .

Für einen Clientanmeldeinformationenflow müssen Sie ein Anwendungsgeheimnis erstellen. Der geheime Clientschlüssel wird auch als Anwendungskennwort bezeichnet. Ihre Anwendung verwendet das Geheimnis, um ein Zugriffstoken abzurufen.

  1. Wählen Sie auf der Seite Microsoft Entra ID – App-Registrierungen die erstellte Anwendung (z. B. Client_Credentials_Auth_app) aus.
  2. Wählen Sie im linken Menü unter Verwalten die Option Zertifikate und Geheimnisse aus.
  3. Wählen Sie Neuer geheimer Clientschlüssel.
  4. Geben Sie im Feld Beschreibung eine Beschreibung für das Clientgeheimnis ein. Beispielsweise clientsecret1.
  5. Wählen Sie unter Läuft ab einen Zeitraum aus, für den das Geheimnis gültig ist, und wählen Sie dann Hinzufügen aus.
  6. Notieren Sie sich den Wert des Geheimnisses, das in Ihrem Clientanwendungscode verwendet werden soll. Dieser Geheimniswert kann nach Verlassen dieser Seite nicht erneut angezeigt werden. Sie verwenden diesen Wert als Anwendungsgeheimnis im Code Ihrer Anwendung.

Erstellen der Azure AD B2C-Richtlinienschlüssel

Sie müssen die Client-ID und den Wert für den geheimen Clientschlüssel speichern, den Sie zuvor in Ihrem Azure AD B2C-Mandanten erfasst haben.

  1. Melden Sie sich beim Azure-Portal an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
  3. Wählen Sie links oben im Azure-Portal die Option Alle Dienste aus, suchen Sie nach Azure AD B2C, und wählen Sie dann diese Option aus.
  4. Wählen Sie auf der Seite „Übersicht“ die Option Framework für die Identitätsfunktion aus.
  5. Klicken Sie erst auf Richtlinienschlüssel und anschließend auf Hinzufügen.
  6. Klicken Sie unter Optionen auf Manual.
  7. Geben Sie einen Namen für den Richtlinienschlüssel ein, SecureRESTClientId. Dem Namen Ihres Schlüssels wird automatisch das Präfix B2C_1A_ hinzugefügt.
  8. Geben Sie im Feld Geheimnis die Client-ID ein, die Sie zuvor notiert haben.
  9. Wählen Sie für Schlüsselverwendung die Option Signature aus.
  10. Wählen Sie Erstellen aus.
  11. Erstellen Sie einen weiteren Richtlinienschlüssel mit den folgenden Einstellungen:
    • Name: SecureRESTClientSecret.
    • Geheimnis: Geben Sie den geheimen Clientschlüssel ein, den Sie zuvor notiert haben

Ersetzen Sie im „ServiceUrl“-Element den Platzhalter „your-tenant-name“ durch den Namen Ihres Microsoft Entra-Mandanten. Alle verfügbaren Optionen finden Sie unter Definieren eines technischen RESTful-Profils.

<TechnicalProfile Id="REST-AcquireAccessToken">
  <DisplayName></DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ServiceUrl">https://login.microsoftonline.com/your-tenant-name.onmicrosoft.com/oauth2/v2.0/token</Item>
    <Item Key="AuthenticationType">Basic</Item>
     <Item Key="SendClaimsIn">Form</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_SecureRESTClientId" />
    <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_SecureRESTClientSecret" />
  </CryptographicKeys>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="grant_type" DefaultValue="client_credentials" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="scope" DefaultValue="https://graph.microsoft.com/.default" AlwaysUseDefaultValue="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="bearerToken" PartnerClaimType="access_token" />
  </OutputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Hinweis

Wenn Sie die Ansprüche grant_type oder scope in anderen technischen Profilen verwenden, wird empfohlen, dass sie auch DefaultValue angeben und AlwaysUseDefaultValue="true" verwenden, um potenzielle Konflikte bei der Bindung mit dem falschen Wert zu vermeiden.

Ändern des technischen REST-Profils zur Verwendung der Bearertokenauthentifizierung

Um die Bearertokenauthentifizierung in Ihrer benutzerdefinierten Richtlinie zu unterstützen, müssen Sie das technische REST-API-Profil mithilfe der folgenden Schritte ändern:

  1. Öffnen Sie die Erweiterungsrichtliniendatei TrustFrameworkExtensions.xml in Ihrem Arbeitsverzeichnis.

  2. Suchen Sie den <TechnicalProfile>-Knoten, der Id="REST-API-SignUp" enthält.

  3. Suchen Sie das <Metadata>-Element.

  4. Ändern Sie den Authentifizierungstyp (AuthenticationType) wie folgt in Bearer:

    <Item Key="AuthenticationType">Bearer</Item>
    
  5. Ändern Sie das Element UseClaimAsBearerToken in bearerToken, oder fügen Sie es wie folgt hinzu. bearerToken ist der Name des Anspruchs, von dem das Bearertoken abgerufen wird (der Ausgabeanspruch von REST-AcquireAccessToken).

    <Item Key="UseClaimAsBearerToken">bearerToken</Item>
    
  6. Fügen Sie den Anspruch aus dem vorherigen Schritt als Eingabeanspruch hinzu:

    <InputClaim ClaimTypeReferenceId="bearerToken"/>
    

Nachdem Sie die Richtlinie aktualisiert haben, sollte Ihr technisches Profil wie der folgende XML-Code aussehen:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile 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>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="UseClaimAsBearerToken">bearerToken</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="bearerToken"/>
      </InputClaims>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Aufrufen des technischen REST-Profils

Um das technische REST-GetProfile-Profil aufzurufen, müssen Sie zunächst ein Microsoft Entra-Zugriffstoken mithilfe des technischen REST-AcquireAccessToken-Profils erwerben. Das folgende Beispiel zeigt, wie Sie das technische REST-GetProfile-Profil aus einem technischen -Validierungsprofil aufrufen:

<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
  <ValidationTechnicalProfile ReferenceId="REST-GetProfile" />
</ValidationTechnicalProfiles>

Das folgende Beispiel zeigt, wie Sie das technische REST-GetProfile-Profil von einer Benutzerreise oder einer Unterreise aufrufen:

<OrchestrationSteps>
  <OrchestrationStep Order="2" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-AcquireAccessTokens" TechnicalProfileReferenceId="REST-AcquireAccessToken" />
    </ClaimsExchanges>
  </OrchestrationStep>

  <OrchestrationStep Order="3" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-GetProfile" TechnicalProfileReferenceId="REST-GetProfile" />
    </ClaimsExchanges>
  </OrchestrationStep>
</OrchestrationSteps>

Verwenden eines statischen OAuth2-Bearertokens

Hinzufügen des Richtlinienschlüssels für das OAuth2-Bearertoken

Rufen Sie zum Konfigurieren eines technischen REST-API-Profils mit einem OAuth2-Bearertoken ein Zugriffstoken vom REST-API-Besitzer ab. Erstellen Sie dann den folgenden kryptografischen Schlüssel zum Speichern des Bearertokens.

  1. Melden Sie sich beim Azure-Portal an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
  3. Wählen Sie links oben im Azure-Portal die Option Alle Dienste aus, suchen Sie nach Azure AD B2C, und wählen Sie dann diese Option aus.
  4. Wählen Sie auf der Seite „Übersicht“ die Option Framework für die Identitätsfunktion aus.
  5. Wählen Sie Richtlinienschlüssel aus, und wählen Sie dann Hinzufügen aus.
  6. Klicken Sie unter Optionen auf Manual.
  7. Geben Sie einen Namen für den Richtlinienschlüssel ein. Beispiel: RestApiBearerToken. Dem Namen Ihres Schlüssels wird automatisch das Präfix B2C_1A_ hinzugefügt.
  8. Geben Sie im Feld Geheimnis den geheimen Clientschlüssel ein, den Sie zuvor notiert haben.
  9. Wählen Sie für Schlüsselverwendung die Option Encryption aus.
  10. Klicken Sie auf Erstellen.

Konfigurieren Ihres technischen REST-API-Profils für die Verwendung des Bearertoken-Richtlinienschlüssels

Konfigurieren Sie nach dem Erstellen des erforderlichen Schlüssels die Metadaten Ihres technischen REST-API-Profils so, dass sie auf das Bearertoken verweisen.

  1. Öffnen Sie in Ihrem Arbeitsverzeichnis die Erweiterungsrichtliniendatei („TrustFrameworkExtensions.xml“).
  2. Suchen Sie das technische REST-API-Profil. Beispiel: REST-ValidateProfile oder REST-GetProfile.
  3. Suchen Sie das <Metadata>-Element.
  4. Ändern Sie den Authentifizierungstyp (AuthenticationType) in Bearer.
  5. Ändern Sie den Wert von AllowInsecureAuthInProduction in false.
  6. Fügen Sie den folgenden XML-Codeausschnitt unmittelbar hinter dem schließenden </Metadata>-Element hinzu:
    <CryptographicKeys>
       <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
    </CryptographicKeys>
    

Nachfolgend finden Sie einen XML-Codeausschnitt als Beispiel für ein mit der Bearertokenauthentifizierung konfiguriertes technisches RESTful-Profi:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile 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>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Fügen Sie den Verweis auf das technische Überprüfungsprofil dem technischen Profil für die Registrierung hinzu, das REST-AcquireAccessToken aufruft. Dieses Verhalten bedeutet, dass Azure AD B2C erst nach erfolgreicher Überprüfung mit der Erstellung des Kontos im Verzeichnis fortfährt.

Beispiel:

```XML
<ValidationTechnicalProfiles>
   ....
   <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
   ....
</ValidationTechnicalProfiles>

Authentifizierung mit API-Schlüssel

Von einigen Diensten wird ein API-Schlüsselmechanismus verwendet, um den Zugriff auf Ihre HTTP-Endpunkte während der Entwicklung zu verschleiern. In diesem Fall muss der Aufrufer einen eindeutigen Schlüssel als HTTP-Header oder HTTP-Abfrageparameter einschließen. Für Azure Functions können Sie dies erreichen, indem Sie code als Abfrageparameter in die Endpunkt-URL Ihres API-Connectors einschließen. Beispiel: https://contoso.azurewebsites.net/api/endpoint?code=0123456789.

Hierbei handelt es sich nicht um einen Mechanismus, der allein in der Produktion verwendet werden sollte. Daher ist die Konfiguration für die Standard- oder Zertifikatauthentifizierung immer erforderlich. Wenn Sie für Entwicklungszwecke keine Authentifizierungsmethode implementieren möchten (nicht empfohlen), können Sie in der API-Connectorkonfiguration die Standardauthentifizierung auswählen und temporäre Werte für username und password verwenden, die von der API ignoriert werden können, während Sie die ordnungsgemäße Autorisierung implementieren.

Ein API-Schlüssel ist ein eindeutiger Bezeichner, der zum Authentifizieren eines Benutzers für den Zugriff auf einen Rest-API-Endpunkt verwendet wird. Der Schlüssel wird in einem benutzerdefinierten HTTP-Header gesendet. Der HTTP-Trigger in Azure Functions beispielsweise verwendet x-functions-key im HTTP-Header, um den Anforderer zu identifizieren.

Hinzufügen von Richtlinienschlüsseln als API-Schlüssel

Um ein technisches REST-API-Profil für die Authentifizierung mit API-Schlüssel zu konfigurieren, müssen Sie den folgenden kryptografischen Schlüssel zum Speichern des API-Schlüssels erstellen:

  1. Melden Sie sich beim Azure-Portal an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
  3. Wählen Sie links oben im Azure-Portal die Option Alle Dienste aus, suchen Sie nach Azure AD B2C, und wählen Sie dann diese Option aus.
  4. Wählen Sie auf der Seite „Übersicht“ die Option Framework für die Identitätsfunktion aus.
  5. Wählen Sie Richtlinienschlüssel aus, und wählen Sie dann Hinzufügen aus.
  6. Wählen Sie unter Optionen den Eintrag Manuell aus.
  7. Geben Sie RestApiKey als Name ein. Das Präfix B2C_1A_ wird möglicherweise automatisch hinzugefügt.
  8. Geben Sie im Feld Geheimnis den REST-API-Schlüssel ein.
  9. Wählen Sie für Schlüsselverwendung die Option Verschlüsselung aus.
  10. Klicken Sie auf Erstellen.

Konfigurieren des technischen REST-API-Profils für die Authentifizierung mit API-Schlüssel

Konfigurieren Sie nach dem Erstellen des erforderlichen Schlüssels die Metadaten Ihres technischen REST-API-Profils so, dass sie auf die Anmeldeinformationen verweisen.

  1. Öffnen Sie in Ihrem Arbeitsverzeichnis die Erweiterungsrichtliniendatei („TrustFrameworkExtensions.xml“).
  2. Suchen Sie das technische REST-API-Profil. Beispiel: REST-ValidateProfile oder REST-GetProfile.
  3. Suchen Sie das <Metadata>-Element.
  4. Ändern Sie den Authentifizierungstyp (AuthenticationType) in ApiKeyHeader.
  5. Ändern Sie den Wert von AllowInsecureAuthInProduction in false.
  6. Fügen Sie den folgenden XML-Codeausschnitt unmittelbar hinter dem schließenden </Metadata>-Element hinzu:
    <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
    </CryptographicKeys>
    

Die ID des kryptografischen Schlüssels definiert den HTTP-Header. In diesem Beispiel wird der API-Schlüssel als x-functions-key gesendet.

Nachfolgend finden Sie einen XML-Codeausschnitt als Beispiel für ein technisches RESTful-Profil, das für die Authentifizierung mit API-Schlüssel zum Aufrufen einer Azure-Funktion konfiguriert wurde:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile 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>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ApiKeyHeader</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Nächste Schritte

  • Weitere Informationen zum Element für das technische RESTful-Profil finden Sie in der Referenz zu benutzerdefinierten Richtlinien.