尝试调用我的自定义授权器时,我会遇到错误。我称之为这样:
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.ientity.inderity.testinvokeauthorizer。html
我的访问令牌是1418个字符,因此很明显它超过了这个限制。我的问题是,这仅仅是对测试启动的授权器命令的限制,还是此限制也适用于真实事物?我使用的是标准身份提供商(KeyCloak(的普通JWT令牌,因此我真的没有什么可以缩短它的。我是否以某种方式使用了此错误,还是在AWS授权器中的JWT令牌确实有1024个字符限制?
aws ioT测试效率授权器练习相同的约束,以帮助调试实际自定义授权调用。
不幸的是,AWS IoT DeviceGateway具有标头尺寸限制,该限制将自定义验证令状长度限制为目前的1024个字符。
如果您的JWT令牌包含任何授权信息,那么我建议将其剥离以将其限制在身份验证中,因为授权者返回的IoT策略文件旨在完成授权。
现在