首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全球技术精选

    OAuth 2.0 扩展协议之 PKCE

    Code + PKCE, 这也是最佳实践,PKCE 最初是为移动设备应用和本地应用创建的, 主要是为了减少公共客户端的授权码拦截攻击。 是的, 您现在都可以尝试使用 Authorization Code + PKCE 的授权模式。那 PKCE 为什么有这种魔力呢? 在经过一段时间之后, PKCE 扩展协议推出, 就是为了解决公开客户端的授权安全问题。 PKCE 协议流程 PKCE 协议本身是对 OAuth 2.0 的扩展, 它和之前的授权码流程大体上是一致的, 区别在于, 在向授权服务器的 authorize endpoint 请求时,需要额外的 PKCE 是怎么做的呢?

    2.4K20发布于 2021-11-18
  • 来自专栏后端开发

    深入解析 PKCE:保护 OAuth 2.0 公共客户端的关键技术

    PKCE 的引入,旨在解决这一安全隐患,确保只有最初发起授权请求的客户端才能完成令牌交换。 PKCE 的工作原理PKCE 在标准的授权码流程中增加了以下步骤:生成 Code Verifier:客户端在发起授权请求之前,生成一个高熵的随机字符串,称为 code_verifier。 PKCE 的安全优势PKCE 的核心优势在于,即使授权码被拦截,攻击者也无法在没有 code_verifier 的情况下成功交换访问令牌。 PKCE 的适用范围虽然 PKCE 最初是为移动应用设计的,但其在防止授权码注入方面的能力使其对所有类型的 OAuth 客户端都具有价值。 实现 PKCE 的注意事项在实现 PKCE 时,开发者应注意以下几点:使用安全的随机数生成器:确保 code_verifier 的生成具有足够的熵,以防止被猜测。

    1.7K10编辑于 2025-01-26
  • 来自专栏coder

    OAuth 详解<5> 什么是OAuth 2.0 隐式流, 已经不推荐了吗?

    OAuth 工作组在几年前通过对授权代码流程的 PKCE 扩展解决了这个问题。 PKCE 的授权代码流程添加了一个额外的步骤,它允许我们保护授权代码,这样即使它在重定向期间被盗,它本身也将毫无用处。 立即开始在 JavaScript 中使用 PKCE 那么您准备好开始在 JavaScript 中使用 PKCE 编写应用程序了吗?让我们来看看这到底意味着什么。 您已经使用 vanilla JavaScript 在浏览器中成功实现了 PKCE! 您可以在此处找到完整的示例代码:pkce-vanilla-js 希望这对在浏览器中执行 PKCE 所需的内容有所帮助! OAuth 2.0 PKCE Flow

    1.4K40编辑于 2023-10-16
  • 来自专栏coder

    从0开始构建一个Oauth2 Server服务 <3> 构建服务器端应用程序

    OAuth 安全 直到 2019 年,OAuth 2.0 规范只建议对移动和 JavaScript 应用程序使用PKCE扩展。 最新的 OAuth Security BCP 现在建议也将 PKCE 用于服务器端应用程序,因为它也提供了一些额外的好处。 常见的 OAuth 服务适应这个新建议可能需要一些时间,但是如果您从头开始构建服务器,您绝对应该为所有类型的客户端支持 PKCE。 授权请求参数 以下参数用于发出授权请求。 PKCE 如果服务支持 Web 服务器应用程序的 PKCE,请在此处也包括 PKCE 质询和质询方法。这在单页应用程序和移动应用程序中的完整示例中进行了描述。 PKCE 验证者 如果服务支持 Web 服务器应用程序的 PKCE,则客户端在交换授权代码时也需要包含后续 PKCE 参数。同样,请参阅单页应用程序和移动应用程序以获取使用 PKCE 扩展的完整示例。

    96830编辑于 2023-10-16
  • 来自专栏DotNet NB && CloudNative

    ASP.NET Core 10 安全全景图:五大支柱构筑坚不可摧的 API 防线

    ASP.NET Core 10 以对现代化防御手段的一流支持进入竞技场:自动化 PKCE、细粒度策略授权与内置速率限制无缝结合、无停机证书轮换、FIDO2 无密码流程,以及零信任(Zero-Trust) PKCE 1.1. 什么是 OAuth2? OAuth2 是一个用于委托授权的行业标准协议。 PKCE (Proof Key for Code Exchange) 登场 PKCE 在流程中增加了两个步骤: 1. 代码验证器 (Code Verifier):由客户端生成的一个随机字符串。 2. 启用 PKCE 并定义您的第一个策略。 3. 连接 Azure Key Vault 或文件监视器来管理证书。 4. 添加 FIDO2 并尝试基于浏览器的 WebAuthn。 5. 借助自动化 PKCE、策略驱动的授权、速率限制、证书轮换、FIDO2 无密码登录以及零信任基础,您可以自信地抵御现代威胁。

    50510编辑于 2025-08-24
  • 来自专栏嘿dotNet

    关于OAuth2.0 Authorization Code + PKCE flow在原生客户端(Native App)下集成的一点思考

    Implicit Flow Password Grant,均已被标记为Legacy,且OAuth2.1里面已经删除了,目前OAuth2.1只剩三种flow: Authorization Code+ PKCE 但是 原有已经使用是这种模式的自有App还是可以接着使用的 没有问题;因为自有App和自有授权中心没有需要授权,是一起的; 如果是新开发App呢,还是优先考虑:Authorization Code + PKCE 另一个问题是,Authorization code code换取token的时候需要app_secret这些; 所以引出我们的PKCE流程; Authorization Code + PKCE在Native PKCE的概念: PKCE 全称Proof Key for Code Exchange,直译:用一个Proof key来做Code交换; 解决的问题是,既然你可以拦截我的Authorization code 流程设计精妙,已经解决了Code传参问题; 总结 有了PKCE, 在Native App中使用Code传参的话直接用原先的方式: 1、是绑定URL Scheme通过类似app-name://?

    1.5K30编辑于 2022-05-10
  • 来自专栏全球技术精选

    OAuth 2.1 带来了哪些变化

    ⚡ 推荐使用 Authorization Code + PKCE 根据 OAuth 2.0 安全最佳实践(Security Best Current Practices) 2.1.1 章节[1] 授权码 (Authorization Code) 模式大家都很熟悉了,也是最安全的授权流程, 那 PKCE 又是什么呢? , 授权服务器通过它来验证客户端,把访问令牌(access_token) 颁发给真实的客户端而不是伪造的,下边是 Authorization Code + PKCE 的授权流程图。 现在您可以考虑替换为 Authorization Code + PKCE 的授权模式。 现在您可以考虑使用 Authorization Code + PKCE 替换之前的密码授权模式。

    2.2K30发布于 2021-11-30
  • 来自专栏后端开发

    深度解析 OAuthClient:协议角色、实现剖析与安全实践

    随后社区又提出PKCE(ProofKeyforCodeExchange)来防止授权码拦截攻击,使得移动端和SPA也能安全使用授权码流程(oauth.net,Auth0)。 安全最佳实践文档BCP9760更进一步,建议所有客户端都启用PKCE,并摒弃隐式流程(oauth.net)。 微软身份平台、Auth0、Postman等主流云提供商均在各自文档里把PKCE作为默认方案推广(MicrosoftLearn,PostmanBlog)。 :IETFBCP要求即使是机密客户端也应启用PKCE以抵御授权码拦截(oauth.net,Curity)。 但在落地过程中,你需要关注安全更新(如PKCE)、选择合适生态库,并在生产中持续监控令牌生命周期。

    13700编辑于 2026-02-21
  • 来自专栏AI SPPECH

    OAuth2 授权码流程:简版时序与接口示例

    https://app/callback&client_id=xxx&client_secret=yyy 对照表 项目 说明 redirect_uri 必须与注册一致 code有效期 较短,1-5分钟 PKCE 公共客户端使用PKCE增强安全性。 常见坑与替代法 坑:回调地址不匹配。替代:注册正确且URL编码。 坑:code被重用。替代:服务端一次性使用且过期。 下一篇预告 CORS 跨域不通?

    20010编辑于 2025-11-18
  • 来自专栏DotNet NB && CloudNative

    ASP.NET Core 中的身份验证和授权(针对 .NET 8/9 更新)

    options.ClientSecret= Configuration["AzureAd:ClientSecret"]; options.ResponseType="code"; options.UsePkce=true;// PKCE for enhanced security options.SaveTokens=true; }); services.AddAuthorization(); } 密钥更新:将 PKCE 与授权码流程结合使用 PKCE(代码交换证明密钥)在 ASP.NET Core 8 中默认启用,通过防止令牌拦截攻击,使授权代码流更加安全。 借助 ASP.NET Core 8 中的新功能(例如默认 PKCE 和改进的方案处理),开发人员可以构建更安全、更简化的应用程序。 使用 OAuth2 实施 PKCE 以实现安全的授权代码流。 使用基于策略的授权进行复杂的、声明驱动的访问控制。 优先考虑密钥的安全存储并强制实施 HTTPS 以保护敏感数据。

    2.5K10编辑于 2024-12-20
  • 来自专栏全球技术精选

    OAuth 2.1 的进化之路

    为了解决 OAuth 2.0 对公开客户端的授权安全问题, PKCE (RFC 6379)协议应运而生, 全称是 Proof Key for Code Exchange,PKCE 的原理是, 对于公共的客户端 后来,"OAuth 2.0 for Native Apps"(RFC 8252)规范发布,推荐原生应用也使用授权码 + PKCE。 在 OAuth 2.0 安全最佳实践(Security BCP)中, 弃用了隐式和密码授权,并且推荐所有的客户端都应该使用 Authorization Code + PKCE 的组合。

    1K20发布于 2021-11-30
  • 来自专栏coder

    从0开始构建一个Oauth2Server服务 <4> 构建服务器端应用程序

    构建服务器端应用程序 以下分步示例说明了将授权代码流与 PKCE 结合使用。 开始 高级概述是这样的: 使用应用程序的客户端 ID、重定向 URL、状态和 PKCE 代码质询参数创建登录链接 用户看到授权提示并批准请求 使用授权码将用户重定向回应用程序的服务器 该应用程序交换访问令牌的授权代码 App发起授权请求 该应用程序通过制作包含客户端 ID、范围、状态和 PKCE 代码验证程序的 URL 来启动流程。 如果应用程序想要使用授权码授予但不能保护其秘密(即本机移动应用程序或单页 JavaScript 应用程序),则在发出请求以交换授权码以获取访问令牌时不需要客户端秘密,并且还必须使用 PKCE。 但是,某些服务仍然不支持 PKCE,因此可能无法从单页应用程序本身执行授权流程,并且客户端 JavaScript 代码可能需要具有执行 OAuth 的配套服务器端组件流动代替。

    99720编辑于 2023-10-16
  • 来自专栏网络安全技术点滴分享

    OAuth/OpenID Connect 安全评估实战:一份完整的测试用例清单

    PKCE降级攻击测试是否存在PKCE降级攻击的可能。4. SSRF漏洞检查OAuth流程中是否存在服务端请求伪造(SSRF)漏洞。5. State参数与CSRF检查 state 参数是否存在。 使用PKCE扩展来正确保护授权码和令牌交换过程。不允许对PKCE扩展等安全特性进行降级或回退。

    19810编辑于 2026-02-26
  • 来自专栏陶士涵的菜地

    [Oauth] OAuth 2.1整合简化OAuth 2.0

    OAuth 2.1合并了这些规范的更改,以简化核心文档 与OAuth 2.0的主要区别如下: 授权代码授予使用PKCE中的功能进行了扩展,因此,根据本规范使用授权代码授予的唯一方法需要添加PKCE机制。

    1.3K10发布于 2020-04-24
  • 来自专栏小柔博客园

    Quarkus 2.8.0引入了细粒度的Transaction API

    Quarkus现在支持OpenID连接(OIDC)的密钥交换证明(PKCE),这是OAuth 2.0协议上的一个身份层。PKCE是OAuth 2.0的扩展,以减轻公共客户端请求访问令牌时的安全威胁。

    57430编辑于 2023-10-14
  • 来自专栏云云众生s

    OAuth 2.0:徒有虚名?

    然而,安全问题导致引入了代码交换证明密钥(PKCE),在RFC 7636中指定。PKCE重新引入了一种类似签名的机制来防止特定攻击,尤其是在移动环境中。 他们遵循所有“建议”,因为他们已经实现了PKCE。他们可能符合OAuth 2.1标准,但稍后再详细介绍。 什么构成了一个好的标准? 一个好的标准在特异性、灵活性和简单性之间取得微妙的平衡。 此修订旨在: 将最佳实践和多个 RFC 合并到单个综合文档中 要求所有客户端都使用 PKCE,从而全面增强安全性 删除有问题的授权 统一处理公共客户端和私有客户端 强制限制刷新令牌和安全重定向 虽然 OAuth

    46610编辑于 2024-12-31
  • 来自专栏coder

    从0开始构建一个Oauth2Server服务 <6> 移动和本机应用程序

    当前的最佳做法是将授权流程与 PKCE 一起使用,同时启动外部浏览器,以确保本机应用程序无法修改浏览器窗口或检查内容。 许多网站都提供移动 SDK 来为您处理授权过程。 如果服务不提供自己的抽象,而您必须直接使用它们的 OAuth 2.0 端点,本节介绍如何使用授权代码流和 PKCE 来与 API 交互。 您将为授权请求使用相同的参数,如服务器端应用程序中所述,包括 PKCE 参数。 生成的重定向将包含临时授权代码,应用程序将使用该代码从其本机代码交换访问令牌。 客户端首先创建所谓的 PKCE“代码验证器”。这是一个加密随机字符串,使用字符A-Z、a-z、0-9和标点字符-._~(连字符、句点、下划线和波浪号),长度在 43 到 128 个字符之间。 这是从应用程序的本机代码而不是从浏览器内部发生的,因为这是存储 PKCE code_verifier 的地方。该请求将具有以下参数。

    1.1K30编辑于 2023-10-16
  • 来自专栏云短信服务

    理解 OAuth 2.0

    PKCE 关于无后台应用移动端应用(又称原生应用或者公共应用)需要使用 PKCE(Proof Key for Code Exchange)模式,是基于 Authorization Code 模式做了扩展 在有后端的场景下,我们一般认为 Authorization Code 模式已经足够安全了,但是在客户端存在 Authorization Code 被劫持的风险场景下,PKCE 是一个必选项。

    1.4K40发布于 2021-08-28
  • 来自专栏锅总

    运维锅总详解OAuth 2.0协议

    OAuth 2.0 的扩展 2014年:引入了 PKCE(Proof Key for Code Exchange),旨在增强授权码模式的安全性,尤其在公共客户端(如移动应用)中,防止授权码被拦截和重用。 OAuth 2.1 移除了不安全或不推荐的特性,如密码模式和隐式模式,强调 PKCE 的使用。 OAuth 2.1 的关键改进 PKCE:OAuth 2.1 强制要求 PKCE 作为授权码模式的一部分,增加了安全性。

    1.1K10编辑于 2024-07-20
  • 来自专栏小柔博客园

    Quarkus 2.8.0引入了细粒度的Transaction API

    Quarkus现在支持OpenID连接(OIDC)的密钥交换证明(PKCE),这是OAuth 2.0协议上的一个身份层。PKCE是OAuth 2.0的扩展,以减轻公共客户端请求访问令牌时的安全威胁。

    61920编辑于 2023-10-14
领券