【发布时间】:2021-03-30 04:17:36
【问题描述】:
在使用 OpenID Connect/OAuth2 参加 ASP.NET 身份安全课程时,我了解了不同工作流程的差异和优缺点。
具体来说,我对 code id_token 混合工作流程的用途感到困惑,它就像授权代码工作流程一样,只是它还从前端通道返回一个(简化的)id_token。
所以我的第一个问题是,如果稍后要通过后台通道再次检索完整的 id 令牌和访问令牌,那么淡化 id_token 的目的是什么首先由第一个(不太安全的)请求返回?
另一件事是关于安全性:课程讲师提到,即使没有 PKCE 保护,使用 code id_token 的混合工作流程也被认为是安全的,原因有两个:
- 初始的
id_token包含一个c_hash值,将其与授权码相关联,保护其免受授权码泄漏/重放攻击
我的问题:由于初始id_token 以完全相同的方式与授权码一起返回,如果授权码被泄露,我们是否应该假设id_token 也被泄露,使这种保护无效?
-
nonce字符串确保一次性使用授权码
我的问题: 由于nonce 以纯文本形式包含在 URL 中,如果攻击者设法在合法用户之前向客户端发布重定向响应以及授权代码,则攻击会成功吧?
鉴于这些,是否正确地说具有 PKCE 保护(加上 nonce)的授权代码工作流比没有 PKCE 的 code id_token 混合工作流更安全?
谢谢。
【问题讨论】:
标签: oauth-2.0 asp.net-identity identityserver4 openid-connect