举个例子,让我们看看如何使用Kubernetes进行身份验证:

具体来说,让我们关注api服务器的功能。要对请求进行身份验证,它:
一定有更多的东西!OIDC提供商的问题是,他们将向几乎任何人分发带有有效签名的令牌。例如,假设我想使用Google作为我的身份提供者。如果唯一的要求是JWT签名是有效的,攻击者可以设置一些我可能喜欢的站点,比如用有趣的猫图片。在某个时候,我访问该站点并登录,并且bingo,攻击者有一个带有有效签名和我的名字的身份JWT。如果funnycatpictures.com的所有者现在可以以我的名义访问Kubernetes服务器,那将是非常糟糕的。
那么,有哪些具体的限制因素可以防止这种攻击呢?
我的理解是,JWT中的aud (受众)声明是其中的一部分: Kubernetes必须只在aud包含其OAuth客户端ID时才接受令牌。这意味着发给其他OAuth客户端的令牌(比如有趣的猫图片站点)不会被接受,因为它们会有错误的aud。
但是,使用隐式授权流似乎有一种解决方法,它不需要OAuth客户端秘密。因此,funnycatpictures.com可以使用隐式流,但可以使用Kubernetes客户机id,从而获得具有正确aud的令牌,这将被Kubernetes API服务器接受。
是什么阻止了这样的攻击?
发布于 2018-09-17 21:29:32
作用域。Cat图片将无法为您的API请求作用域,因此无法使用任何结果访问令牌来访问它。此外,在隐式流中,回调url是针对客户端注册的,必须完全匹配。
https://security.stackexchange.com/questions/192124
复制相似问题