1

我们使用 AWS Lambda Authorizer 和 API Gateway 来保护我们的下游 API。

下面是我们基于 Java 的 lambda 授权器的代码片段

Statement statement = Statement.builder()
            .resource(input.getMethodArn()).effect(effect)
            .build();

    PolicyDocument policyDocument = PolicyDocument.builder()
            .statements(
                    Collections.singletonList(statement)
            ).build();

    return AuthorizerResponse.builder()
            .principalId(userId)
            .policyDocument(policyDocument)
            .context(ctx)
            .build();
  1. 使用正确的令牌(效果 =“允许”):从 API 获得正确的 API 响应

  2. 使用不正确的令牌(效果 =“拒绝”)获取 403 HTTP 响应代码。

我们需要 401(“未经授权”)作为回应,有人可以帮忙怎么做吗?我们有用 java 编写的 lambda 授权器。

4

2 回答 2

0

尝试抛出带有“未经授权”消息的异常。

于 2020-12-23T00:24:25.327 回答
0

您可以使用 Unauthorized 消息抛出 RuntimeException。有一件事要记住,你不能抛出像 Exception("Unauthorized") 这样的检查异常。因为RequestHandler接口的handleRequest方法签名不允许这样做。

if(isInvalidToken){
  throw new RuntimeException("Unauthorized");
}
于 2021-10-01T06:03:10.307 回答