OAuth客户端是否需要验证令牌作为授权代码授予的一部分?

时间:2020-07-15 22:40:50

标签: oauth-2.0 openid-connect

使用授权码(带有或不带有PKCE)来代表用户获取访问+ id令牌的应用是否还需要验证这些令牌(签名,未过期,受众等)?

如果是这样,为什么呢?由于客户端正在使用TLS并指向已配置了TLS的提供者,因此该客户端还会验证令牌缓解哪些攻击/威胁?

1 个答案:

答案 0 :(得分:0)

乍看之下您是对的,并且该规范基本上允许不像您确实建议的那样检查通过TLS直接从令牌端点返回的令牌,但是:

首先,有人可能会争辩说,如果存在签名,则存在签名是有原因的,应该对其进行验证,因为如果提供者不希望签名,提供者也可以自由返回没有签名的令牌(alg =“ none”) /需要客户验证。

其次,存在一些已知的攻击(“ IDP混合”),诱使客户端与错误的令牌端点进行对话,以窃取授权代码:验证返回的ID令牌与预期签名不匹配至少阻止客户端处理攻击者产生的ID令牌。

第三,对于客户来说,保护自己免受一般的IDP损坏或损坏,避免重放攻击或类似攻击是件好事。

我猜想当您在单个域中进行所有操作时,例如,客户端,AS和RS都在同一个组织的控制之下,并且它们之间的关系是固定的并且一对一的,技术上可以验证根据当前的知识和已知的攻击来大刀阔斧。

但是,如果您的用例跨越了多个安全性域,则通常最好进行验证而不是假设。