Selektorkonfiguration für dynamische Authentifizierung ist ungültig, oder ein Multi-Authentifizierungs-Deployment kann Anforderungen später nicht mit einem Authentifizierungsserver abgleichen

Erfahren Sie, wie Sie Fehler beim Selektor für dynamische Authentifizierungen und Fehler beim Anfordern von Übereinstimmungen in Multi-Authentifizierungskonfigurationen beheben, wenn Sie API-Deployments mit dem API-Gateway-Service erstellen.

Wenn ein API-Deployment mehrere Authentifizierungsserver verwendet und dynamisch zwischen diesen auswählt, können Fehler zur Deployment-Zeit oder zur Laufzeit auftreten. Beim Deployment kann das API-Gateway eine ungültige Selektorkonfiguration ablehnen. Zur Laufzeit kann API Gateway das Deployment akzeptieren, aber eine Anforderung nicht mit einem Authentifizierungsserver abgleichen.

Wenn dies geschieht

Es kann sein, dass eines oder beide der folgenden Symptome auftreten:

  • API-Gateway lehnt das Deployment mit einem Invalid Dynamic Authentication Selector-Fehler ab.

  • Das Deployment wurde erfolgreich erstellt. Einige Anforderungen geben jedoch später 401 Unauthorized zurück, da kein Authentifizierungsserver mit der Anforderung übereinstimmt.

Das Problem tritt häufig in Deployments auf, die unterschiedliche Authentifizierungsmethoden für verschiedene Anforderungsmuster verwenden, wie die API-Schlüsselauthentifizierung für ein Routingmuster und die OAuth2-Authentifizierung für ein anderes Routingmuster.

Funktionsweise der dynamischen Authentifizierung

Bei einem dynamischen Authentifizierungs-Deployment wird der Wert selectionSource.selector verwendet, um zu entscheiden, welcher Authentifizierungsserver jede Anforderung verarbeitet. Für jede Anforderung löst API Gateway den Selektorwert aus der Anforderung auf und vergleicht diesen Wert mit den konfigurierten Authentifizierungsserverschlüsseln.

Verwenden Sie eines der folgenden unterstützten Auswahlformulare:

  • request.auth[<key>]

  • request.path[<key>]

  • request.query[<key>]

  • request.headers[<key>]

  • request.subdomain[<key>]

  • request.host

Nachdem API Gateway den Selektorwert aufgelöst hat, wählt es den übereinstimmenden Authentifizierungsserver aus. Wenn kein Authentifizierungsserverschlüssel übereinstimmt, verwendet API Gateway den Standardauthentifizierungsserver, sofern einer konfiguriert ist. Andernfalls verläuft die Anforderung mit 401 Unauthorized nicht erfolgreich.

Teil 1: Deployment-Erstellung nicht erfolgreich, weil der Selektor ungültig ist

Dieser Fehler tritt auf, wenn der Selektorausdruck ungültig ist und das Deployment nicht erstellt werden kann.

Wie das aussieht

Das Deployment wird mit dem folgenden Fehler abgelehnt:

  • Invalid Dynamic Authentication Selector

Warum das passiert

Der Selektorausdruck muss ein unterstütztes Selektorformular und eine gültige Selektorsyntax verwenden. Die folgenden Selektorbeispiele sind ungültig:

  • random

  • request.header[]]

  • request.path[path1]*request.path[path2]

Diese Konfigurationsfehler müssen behoben werden, bevor das Deployment erstellt oder aktualisiert werden kann.

Pfadselektoranforderung

Wenn Sie request.path[<key>] verwenden, muss der Wert <key> der Name eines Pfadparameters sein, der in der Route definiert ist.

Die folgende Route und der Selektor verwenden denselben Pfadparameternamen:

  • Route: /DMPServices/{serviceType}

  • Selektor: request.path[serviceType]

Der Selektor request.path[/] ist nicht gültig, da / kein Pfadparametername ist.

So beheben Sie das Problem

Verwenden Sie die folgenden Prüfungen, um eine ungültige Selektorsyntax zu beheben:

  • Ersetzen Sie den ungültigen Selektor durch eines der unterstützten Selektorformulare.

  • Wenn Sie request.path[<key>] verwenden, definieren Sie denselben benannten Pfadparameter in der Route.

  • Wenn das Anforderungsmuster nicht auf einem stabilen Pfadparameter basiert, verwenden Sie stattdessen einen Header- oder Abfrageparameter-Selektor.

Teil 2: Deployment erfolgreich, Anforderungen später nicht erfolgreich ohne übereinstimmenden Authentifizierungsserver

Dieser Fehler tritt zur Laufzeit auf. Die Deployment-Konfiguration ist gültig, aber eine eingehende Anforderung erzeugt keinen Selektorwert, der mit einem konfigurierten Authentifizierungsserver übereinstimmt.

Wie das aussieht

Zur Laufzeit sind Anforderungen mit der folgenden Meldung nicht erfolgreich:

  • Request unauthorized as no authentication server matched the request and no default is specified

Die Meldung bedeutet, dass das API-Gateway das Deployment erreicht hat, jedoch keinen Authentifizierungsserver für die Anforderung auswählen konnte.

Warum das passiert

Der Fehler tritt normalerweise auf, weil der Selektorwert in der ersten Anforderung vorhanden ist, aber in späteren Anforderungen fehlt. Beispiel: Die erste Anforderung kann einen Abfrageparameter enthalten, der den Authentifizierungsserver auswählt, während spätere Anforderungen für .js-Dateien, .css-Dateien, Bilder oder API-Aufrufe diesen Abfrageparameter weglassen.

Wenn kein Standardauthentifizierungsserver konfiguriert ist, verläuft eine Anforderung, die keinen übereinstimmenden Selektorwert enthält, nicht erfolgreich mit 401 Unauthorized.

So passen Cookies und OAuth2-Status in

Cookies und der OAuth2-Parameter state können dazu beitragen, Session- oder Ablaufinformationen beizubehalten, ersetzen jedoch nicht die Laufzeitselektoranforderung für normale Folgeanforderungen.

Probleme bei der Abfrageparameterauswahl

Ein Abfrageparameter-Selektor kann fehlschlagen, wenn die anfängliche Anforderung den Selektorwert enthält, aber spätere Anforderungen ihn auslassen. Beispiel: Browseranforderungen für Assets wie .js-Dateien, .css-Dateien und Bilder enthalten oft nicht dieselben Abfrageparameter wie die erste Anforderung.

Während des Umleitungs- oder Callback-Schritts von OAuth2 kann das API-Gateway den OAuth2-Parameter state verwenden, um den Authentifizierungsserver wiederherzustellen, der für diesen Ablauf verwendet wurde. Nach dem Callback müssen normale Folgeanforderungen weiterhin mit dem Verhalten der Deployment-Authentifizierungsauswahl übereinstimmen.

So wählen Sie einen besseren Selektor

Verwenden Sie einen Selektorwert, der in jeder Anforderung vorhanden ist, die konsistent authentifiziert werden muss. Die folgenden Selektortypen sind oft zuverlässiger als ein Abfrageparameter-Selektor:

  • Ein Anforderungsheader mit request.headers[<key>].

  • Ein stabiler Pfadparameter mit request.path[<key>].

  • Der Hostname mit request.host, wenn eine hostbasierte Authentifizierungsauswahl erforderlich ist.

Bei browserbasierten Anwendungen ist ein Anforderungsheader oft zuverlässiger als ein Abfrageparameter, da Folgeanforderungen konsistent denselben Header enthalten können.

So beheben Sie Laufzeitabgleichsfehler

Verwenden Sie die folgenden Prüfungen, um Fehler beim Abgleich von Laufzeitauthentifizierungsservern zu beheben:

  • Wenn der Selektor einen Abfrageparameter verwendet, der bei späteren Anforderungen nicht vorhanden ist, ändern Sie den Selektor in einen stabilen Anforderungswert, wie einen Header oder Pfadparameter.

  • Wenn bei einigen Anforderungen erwartet wird, dass der Selektorwert ausgelassen wird, konfigurieren Sie einen geeigneten Standardauthentifizierungsserver.

  • Wenn der Selektor einen Pfadparameter verwendet, stellen Sie sicher, dass spätere Anforderungen denselben Pfadparameter enthalten.

  • Wenn Ihre Anwendung Cookies verwendet, verwenden Sie diese nur für die Sitzungskontinuität. Verlassen Sie sich nicht auf Cookies allein, um den Authentifizierungsserver für normale Folgeanfragen auszuwählen.

Was zu überprüfen ist

Vergleichen Sie für ein bereits aktives Deployment die erfolgreiche Anforderung mit der nicht erfolgreichen Anforderung. Bestätigen Sie die folgenden Details:

  • Der in selectionSource konfigurierte Selektor.

  • Der Selektorwert, der aus der erfolgreichen Anforderung aufgelöst wurde.

  • Der Selektorwert, der aus der fehlgeschlagenen Anforderung aufgelöst wurde.

  • Gibt an, ob der Selektorwert in beiden Anforderungen vorhanden ist.

  • Gibt an, ob ein Authentifizierungsserverschlüssel mit jedem aufgelösten Selektorwert übereinstimmt.

  • Gibt an, ob ein Standardauthentifizierungsserver konfiguriert ist.

Worauf Sie in Logs achten müssen

Verwenden Sie Ausführungslogs, um den Fehlermodus zu identifizieren:

  • Invalid Dynamic Authentication Selector gibt ein Deployment-Konfigurationsproblem an.

  • Request unauthorized as no authentication server matched the request and no default is specified gibt ein Problem mit der Laufzeitanforderung an.

Beheben Sie diese Fehlermodi separat. Eine gültige Deployment-Konfiguration kann zur Laufzeit weiterhin fehlschlagen, wenn spätere Anforderungen keinen übereinstimmenden Selektorwert enthalten.

Fehlerbehebung

Nachdem Sie die Zuordnung des Selektors oder Authentifizierungsservers korrigiert haben, prüfen Sie den Deployment- und Anforderungsfluss:

  • Erstellen oder aktualisieren Sie das Deployment erneut, wenn sich die Selektorkonfiguration geändert hat.

  • Die erste Anforderung erneut senden.

  • Senden Sie die zuvor fehlgeschlagenen Nachfassanforderungen.

  • Vergewissern Sie sich, dass das API-Gateway das Deployment für die Selektorsyntax nicht mehr ablehnt.

  • Bestätigen Sie, dass Laufzeitanforderungen nicht mehr fehlschlagen, weil kein Authentifizierungsserver mit der Anforderung übereinstimmt.

Weitere Informationen

Weitere Informationen finden Sie unter: