Bin*_*000 4 openid oauth-2.0 openid-connect
我目前正在查看不同的 OIDC 流程,并找到了 AuthorizationCode 流程和使用 PKCE 的 AuthorizationCode 流程。
我发现的几乎所有地方都说 PKCE 是客户端密钥的替代品,应该由本机应用程序使用。
现在我想知道有什么理由不使用客户端密钥和 PKCE,这有用还是没有必要?
我正在运行一个我已经测试过的 Openiddict 服务器,它将检查客户端密钥和代码验证器。但我读到的所有地方,都只写着 PKCE 而没有(静态)秘密。
我发现的几乎所有地方都说 PKCE 是客户端密钥的替代品,应该由本机应用程序使用。
当然不。PKCE 和客户端身份验证是两个相加但完全独立的措施:
客户端身份验证(通常由服务器端客户端使用)保证只有授权代码颁发给的客户端应用程序才能兑换它。有了这种安全措施,即使是资源所有者本人也无法赎回自己的代码。
PKCE 保证只有发起授权请求的客户端才能发送有效的令牌请求,因为授权代码绑定到初始代码质询/验证程序,而该初始代码质询/验证程序只有生成它的合法客户端才知道。对于移动/桌面应用程序,PCKE 对于防止依赖于修改特定应用程序处理的 URI 方案的攻击特别有用,这些攻击可能被劫持以重新路由授权响应并窃取授权代码。
如今,我们也倾向于在机密服务器端应用程序中使用 PKCE 来防止授权代码泄露,尽管它最初是为移动或桌面应用程序等公共应用程序设计的。在这种情况下,您绝对应该将其与客户端身份验证(即客户端密钥验证)结合起来。
| 归档时间: |
|
| 查看次数: |
1638 次 |
| 最近记录: |