aws / aws/serverless-java-container
Unable to invoke lambda when "Authorization scopes" added to JWT Authorizer
- Ngôn ngữ chính
- Java
- Star
- 1.6k
- Fork
- 574
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
*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
```
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện Spring Boot 2 AWS Lambda phía sau một HTTP API JWT authorizer với Scopes được cấu hình thông qua SAM. Đọc các vị trí của AwsProxyRequest, AwsProxyRequestContext và ApiGatewayAuthorizerContext được nêu trong exception, sau đó xác minh rằng invocation thành công cả khi giá trị của Scopes là một array và khi là null.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- aws, java, spring-boot
- Lĩnh vực
- api, authentication, cloud
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 38/100