DiP*_*Pix 5 oauth-2.0 openid-connect azure-ad-b2c pkce
我试图了解OAuth 2.0 授权代码流 + PKCEcode_challange和参数之间的区别。state
我知道该state参数是针对 CSRF 攻击的验证,并在客户端(例如 Angular SPA)上生成(并保存在本地存储中),并且需要在成功登录后从回调中的授权应用程序返回,并与之前在state本地保存的值进行比较贮存。
而code_challange生成的基础上code_verifier也是生成并保存在本地存储中。那么使用上有什么区别呢?
我还注意到奇怪的事情 - 我复制了生成的身份验证网址,它是:https://APP_ADDRESS.b2clogin.com/APP_ADDRESS.onmicrosoft.com/b2c_signupsignin/oauth2/v2.0/authorize?client_id=f9d2b[...]&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fauth-callback&response_type=code&scope=f9d2b[...]%20openid&state=31caa207[...]&code_challenge=-MefGRhOo[...]&code_challenge_method=S256&response_mode=query
我在不同的浏览器中使用了该网址。我能够成功登录。我只在控制台中遇到错误:No matching state found in storage。这是有道理的,因为新浏览器中的本地存储是空的。
但为什么没有任何错误呢code_challange?我想它应该无法登录成功,或者我错过了什么?
And*_*ndy 10
使用 PKCE, code_challenge是否正确的检查是在身份验证服务器端完成的,而有效状态的检查是在客户端完成的。
\n在某些情况下,客户端没有正确检查状态/随机数(或根本没有),我们添加了 PKCE 来让身份验证服务器代替进行检查。身份验证服务器可以强制/要求所有客户端遵循 PKCE 概念。
\n我们一起得到非常强大的保护。
\n下图展示了PKCE的工作原理
\n\n我最近在博客中发表了有关状态参数的文章:
\n\n| 归档时间: |
|
| 查看次数: |
2332 次 |
| 最近记录: |