使用授权码(带有或不带有PKCE)来代表用户获取访问+ id令牌的应用是否还需要验证这些令牌(签名,未过期,受众等)?
如果是这样,为什么呢?由于客户端正在使用TLS并指向已配置了TLS的提供者,因此该客户端还会验证令牌缓解哪些攻击/威胁?
答案 0 :(得分:0)
乍看之下您是对的,并且该规范基本上允许不像您确实建议的那样检查通过TLS直接从令牌端点返回的令牌,但是:
首先,有人可能会争辩说,如果存在签名,则存在签名是有原因的,应该对其进行验证,因为如果提供者不希望签名,提供者也可以自由返回没有签名的令牌(alg =“ none”) /需要客户验证。
其次,存在一些已知的攻击(“ IDP混合”),诱使客户端与错误的令牌端点进行对话,以窃取授权代码:验证返回的ID令牌与预期签名不匹配至少阻止客户端处理攻击者产生的ID令牌。
第三,对于客户来说,保护自己免受一般的IDP损坏或损坏,避免重放攻击或类似攻击是件好事。
我猜想当您在单个域中进行所有操作时,例如,客户端,AS和RS都在同一个组织的控制之下,并且它们之间的关系是固定的并且一对一的,技术上可以验证根据当前的知识和已知的攻击来大刀阔斧。
但是,如果您的用例跨越了多个安全性域,则通常最好进行验证而不是假设。