有2个问题。
我在这里想念什么。似乎您向这两个恶意用户提供了具有这2条信息的JS访问密钥,以进入Cognito王国。
答案 0 :(得分:5)
它们不是秘密。
实际上,ID令牌包含iss
声明(属性)(即用户池ID)和aud
声明(即应用程序客户端ID)。
访问令牌包含iss
声明,它也是用户池ID,而client_id
声明则表示应用客户端ID。
如果这些令牌中的任何一个被坏角色拦截,那么它们就可以解码令牌,因为它们只是base64编码的(未加密)。
但是,只要正确地验证了JWT,仅知道这2条信息通常对攻击者来说并没有什么用。
它不授予攻击者访问用户池本身的权限,因为它需要仅分配给用户的AWS凭证,或者已经经过正确身份验证的身份(然后由ID池颁发的凭证)。
就访问api而言,攻击者可能希望以某种方式修改有效负载,以便更改请求中的数据。例如,他们可能想将假设的role
声明从user
更改为admin
,以便提升特权并访问他们不应该访问的区域。通过在服务器端正确地验证JWT令牌以确保有效载荷未被篡改,可以缓解这种情况。
另一种类型的api攻击可能是使用针对一个api进行了正确身份验证的令牌来访问另一个api(JWT替代)。通过验证iss
和aud
声明,以确认JWT是专门发布给预期的用户池和App Client来缓解的。