API Gateway scheint Authentifizierungstoken bei der Konfiguration nicht korrekt zu akzeptieren
mit einem benutzerdefinierten Autorisierer, trotz allem, was ich finden konnte, trifft die Anfrage nicht auf das Ereignis
autorisiert und wird von API Gateway abgelehnt.
wenn es so konfiguriert ist:
whoami:
handler: src/lambdas/session/whoami.handler
events:
- http:
path: session/whoami
method: get
cors: true
authorizer:
name: customAuthorizer
resultTtlInSeconds: 0
identitySource: method.request.header.Authorization
identityValidationExpression: Bearer .*
API Gateway antwortet mit folgendem:
{
"message": "'sometoken' not a valid key=value pair (missing equal-sign) in Authorization header: 'Bearer sometoken'."
}
Und wenn es so konfiguriert ist:
whoami:
handler: src/lambdas/session/whoami.handler
events:
- http:
path: session/whoami
method: get
cors: true
authorizer:
name: customAuthorizer
resultTtlInSeconds: 0
identitySource: method.request.header.Authorization
identityValidationExpression: Bearer .*
Der Fehler ist:
{
"message": "Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header. Authorization=sometoken"
}
Danke!
Hey @BarakChamo, danke fürs Öffnen.
Könnten Sie vielleicht die Lösung für Ihr Problem bereitstellen, damit andere, die über dieses Problem stolpern, sehen können, wie es gelöst werden kann?
Danke! 👍.
Dies hängt normalerweise mit der Anforderung einer URL zusammen, die nicht existiert. Stellen Sie sicher, dass Sie die richtige HTTP-Methode und den richtigen Ressourcenpfad zu einer gültigen Ressource verwenden (die Beispiel-Aufruf-URL enthält keinen Ressourcenpfad). Denken Sie auch daran, die Bereitstellung vor dem Testen durchzuführen.
Wie @jorgecar erwähnte, passiert dies, wenn die URL nicht existiert. Wenn Sie API Gateway Ressourcen hinzufügen, vergessen Sie nicht, diese APIs bereitzustellen.
Hilfreichster Kommentar
Dies hängt normalerweise mit der Anforderung einer URL zusammen, die nicht existiert. Stellen Sie sicher, dass Sie die richtige HTTP-Methode und den richtigen Ressourcenpfad zu einer gültigen Ressource verwenden (die Beispiel-Aufruf-URL enthält keinen Ressourcenpfad). Denken Sie auch daran, die Bereitstellung vor dem Testen durchzuführen.