【问题标题】:How to return 401 ("Unauthorized") from AWS Lambda Authorizer如何从 AWS Lambda Authorizer 返回 401(“未授权”)
【发布时间】:2021-01-07 11:03:57
【问题描述】:

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

下面是我们基于 Java 的 lambda 授权器的代码 sn-p

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 授权器。

【问题讨论】:

    标签: aws-lambda aws-api-gateway lambda-authorizer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      if(isInvalidToken){
        throw new RuntimeException("Unauthorized");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-12
        • 2023-03-09
        • 2021-01-08
        • 2016-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多