温馨提示:本文翻译自stackoverflow.com,查看原文请点击:oauth 2.0 - Should Authorization flow use both secret and PKCE for a Web app

oauth 2.0 - 授权流程应针对Web应用程序同时使用密钥和PKCE吗

发布于 2020-03-27 11:43:12

我当前正在查看不同的OIDC流程,并发现带有PKCE的AuthorizationCode流和AuthorizationCode流。

我发现的几乎所有地方都说PKCE是Client Secret的替代品,应由本机应用程序使用。

现在我想知道为什么不使用客户机密和PKCE的原因是什么,这是否有用还是仅仅是没有必要?

我正在运行经过测试的Openiddict服务器,它将检查客户端密码和代码验证程序。但是我读过的任何地方都只说PKCE,没有(静态)秘密。

查看更多

查看更多

提问者
Binq1000
被浏览
54
Kévin Chalet 2019-07-03 23:05

我发现的几乎所有地方都说PKCE是Client Secret的替代品,应由本机应用程序使用。

当然不。PKCE和客户端身份验证是两个附加但完全独立的措施:

  • 客户端身份验证-通常由服务器端客户端使用-保证只有颁发了授权代码的客户端应用程序才能兑换它。采取这种安全措施后,即使资源所有者本人也无法兑现自己的代码。

  • PKCE保证只有发起授权请求的客户端才能发送有效的令牌请求,因为授权代码已绑定到初始代码质询/验证器,而初始代码质询/验证器仅由生成该请求的合法客户端知道。对于移动/桌面应用程序,PCKE对于防止依赖于修改由特定应用程序处理的URI方案的攻击特别有用,该攻击可能被劫持以重新路由授权响应并窃取授权代码。

如今,即使它最初是为移动或桌面应用程序之类的公共应用程序设计的,我们也倾向于在机密服务器端应用程序中使用PKCE,以防止授权代码泄漏。在这种情况下,您绝对应该将其与客户端身份验证(即客户端机密验证)结合使用。

发布
问题

分享
好友

手机
浏览

扫码手机浏览