aws / aws/serverless-java-container
Unable to invoke lambda when "Authorization scopes" added to JWT Authorizer
- Langage dominant
- Java
- Étoiles
- 1.6k
- Forks
- 574
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
*Serverless Java Container version*: `eg. 1.5.2`
*Implementations:* `Spring Boot 2`
*Framework version:* `eg SpringBoot 2.4.1`
*Frontend service:* `HTTP API`
*Deployment method:* `SAM`
## Scenario
*Describe what you are trying to accomplish*
I am trying to call invoke lambda via HTTP api with JWT authorizer. call to lambda are failing when i add "Authorization scopes" in the JWT authorizer(on HTTP api)
## Expected behavior
I would expect lambda should be able to be invoke with or without Authorization scopes in JWT authorizer
## Actual behavior
I am trying to call invoke lambda via HTTP api with JWT authorizer. call to lambda are failing when i add "Authorization scopes" in the JWT authorizer(on HTTP api) with error message
```com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token
at [Source: (ByteArrayInputStream); line: 1, column: 3530] (through reference chain: com.amazonaws.serverless.proxy.model.AwsProxyRequest["requestContext"]->com.amazonaws.serverless.proxy.model.AwsProxyRequestContext["authorizer"]->com.amazonaws.serverless.proxy.model.ApiGatewayAuthorizerContext["scopes"])```
but without "Authorization scopes" in the JWT authorizer(on HTTP api) calls were going fine as long JWT is valid
## Steps to reproduce
Create a springboot 2 based AWS lambda with HTTP api and Authorization scope with scopes specified in it.
InputStream of call when Authorization scope is added contains a section with Scopes array but same is null when Authorization scope is not defined in JWT Authorizer in HTTP API
"scopes": [
"b",
"a",
"z",
"y",
"x"
]
InputStream of call when Authorization scope is not added
"scopes": null
## Full log output
*Paste the full log output from the Lambda function's CloudWatch logs*
```
logs
```
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par reproduire la Spring Boot 2 AWS Lambda derrière un HTTP API JWT authorizer avec des Scopes configurés via SAM. Lisez les emplacements de AwsProxyRequest, AwsProxyRequestContext et ApiGatewayAuthorizerContext indiqués dans l’exception, puis vérifiez que l’invocation réussit aussi bien lorsque la valeur de Scopes est un tableau que lorsqu’elle est null.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- aws, java, spring-boot
- Domaine
- api, authentication, cloud
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 38/100