aws / aws/serverless-java-container

Unable to invoke lambda when "Authorization scopes" added to JWT Authorizer

Đang mở
#408 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
need feedback
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

Mở 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

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.