aws test-invoke-authorizer:' token'无法满足约束:成员的长度必须小于或等于1024

时间:2018-04-04 08:35:37

标签: amazon-web-services authentication aws-lambda aws-iot

我在尝试调用自定义授权程序时遇到错误。我这样称呼它:

aws --region eu-central-1 iot test-invoke-authorizer --authorizer-name go-dev-iot-authorizer --token "$TOKEN" --token-signature "$SIGNATURE"

(其中$TOKEN$SIGNATURE是包含JWT令牌及其AWS签名的bash变量)

这就是我得到的回应:

An error occurred (InvalidRequestException) when calling the TestInvokeAuthorizer operation: 1 validation error detected: Value '[MY TOKEN IS PRINTED HERE]' at 'token' failed to satisfy constraint: Member must have length less than or equal to 1024

我可以看到令牌字段确实有1024个字符限制:https://docs.aws.amazon.com/iot/latest/developerguide/api-com.amazonaws.iot.identity.TestInvokeAuthorizer.html

我的访问令牌是1418个字符,因此很清楚它超过了这个限制。我的问题是,这只是对test-invoke-authorizer命令的限制还是这个限制也适用于真实的东西?我使用标准身份提供程序(Keycloak)中的普通JWT令牌,因此我无法做很多事情来缩短它。我是否以某种方式使用此错误,或者AWS授权人员中的JWT令牌是否真的有1024个字符限制?

1 个答案:

答案 0 :(得分:0)

aws iot test-invoke-authorizer运用相同的约束来帮助调试实际的自定义授权调用。

不幸的是,AWS Iot DeviceGateway具有标头大小限制,目前将自定义身份验证令牌长度限制为1024个字符。

如果您的JWT令牌包含任何授权信息,那么我建议将其删除以仅限于身份验证,因为授权是由授权人返回的iot策略文档完成的。

更新:AWS Iot DeviceGateway现在支持超过1024个字符的自定义身份验证令牌。