【问题标题】:AWS API Gateway UnrecognizedClientException with Generated Javascript SDKAWS API Gateway UnrecognizedClientException 与生成的 Javascript 开发工具包
【发布时间】:2017-04-06 18:26:53
【问题描述】:

我在使用生成的 Javascript SDK 对我的 API Gateway GET 请求的响应的 x-amzn-errortype 标头中遇到带有 UnrecognizedClientException 的 403 状态代码。被调用的资源利用 IAM Auth,它根据用户组区分用户角色。

这是我的 API 客户端初始化函数

function initializeAPIClient(accessKey, secretKey, sessionToken){
    var config = {
        region : region,
        accessKey : accessKey,
        secretKey : secretKey,
        sessionToken : sessionToken
    }
    apigClient = apigClientFactory.newClient(config);
}

这是我的 GET 请求函数

function testCall(){
    var params = '';
    var body = '';
    var additionalParams = '';

    apigClient.testCallGet(params, body, additionalParams)
    .then(function(result){
        alert("Permissions are available to this user.");
    })
    .catch(function(result){
        alert("Permissions are NOT available to this user.");
    });
}

这是我的请求标头:

:authority:[API_ENDPOINT]
:method:GET
:path:/[STAGE]/[RESOURCE]
:scheme:https
accept:application/json
accept-encoding:gzip, deflate, sdch, br
accept-language:en-US,en;q=0.8
authorization:AWS4-HMAC-SHA256 Credential=[ACCESS_KEY_ID]/20170406/[REGION]/execute-api/aws4_request, SignedHeaders=accept;host;x-amz-date, Signature=[SIGNATURE]
origin:http://localhost:8000
referer:http://localhost:8000/php/[PAGE].php/?username=[USERNAME]&sessionToken=[SESSION_TOKEN]
user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
x-amz-date:20170406T180808Z
x-amz-security-token:[SESSION_TOKEN]

我不确定是什么原因造成的。当我搜索 UnrecognizedClientException 时推荐的解决方案似乎建议做我已经在做的事情。

【问题讨论】:

  • 您是如何生成访问密钥和密钥的?该区域是否与您的 API Gateway api 的区域匹配?
  • 嘿,马克,我想您也回复了我的 AWS 论坛问题,但为了保持一致性,我将在此处发布答案。基本上是使用我的 id 令牌作为会话令牌,这最终成为我的逻辑错误,上面的代码没有说明这一点。

标签: javascript amazon-web-services authentication http-headers aws-api-gateway


【解决方案1】:

我已经解决了我自己的问题,所以这里是任何遇到类似逻辑错误的人的答案。不要使用 Id 令牌作为您的会话令牌,这就是我正在做的。 id 令牌用于生成会话令牌,以及访问密钥和密钥。不要混淆两者。

【讨论】:

    猜你喜欢
    • 2016-05-10
    • 2017-08-02
    • 2020-08-16
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    相关资源
    最近更新 更多