我在尝试调用自定义授权程序时遇到错误。我这样称呼它:
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个字符限制?
答案 0 :(得分:0)
aws iot test-invoke-authorizer运用相同的约束来帮助调试实际的自定义授权调用。
不幸的是,AWS Iot DeviceGateway具有标头大小限制,目前将自定义身份验证令牌长度限制为1024个字符。
如果您的JWT令牌包含任何授权信息,那么我建议将其删除以仅限于身份验证,因为授权是由授权人返回的iot策略文档完成的。
更新:AWS Iot DeviceGateway现在支持超过1024个字符的自定义身份验证令牌。