gpt4 book ai didi

oauth-2.0 - 授权流程是否应该对 Web 应用程序同时使用 secret 和 PKCE

转载 作者:行者123 更新时间:2023-12-04 01:42:32 25 4
gpt4 key购买 nike

我目前正在查看不同的 OIDC 流程,发现 AuthorizationCode 流程和 AuthorizationCode 流程与 PKCE。

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

现在我想知道不使用客户端 key 和 PKCE 的原因是什么,这会有用还是没有必要?

我正在运行一个我测试过的 Openiddict 服务器,它会检查客户端密码和代码验证器。但无论我读到什么,它都只说 PKCE 而没有(静态) secret 。

最佳答案

Almost all places that I found said that the PKCE is a replacement for the Client secret and should be used by native applications.

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

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

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

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

关于oauth-2.0 - 授权流程是否应该对 Web 应用程序同时使用 secret 和 PKCE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56793968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com