Mar*_*lli 11 oauth-2.0 single-page-application openid-connect google-identity pkce
经过反复试验,在我看来,Google OIDC 在不提供客户端机密的情况下不支持代码流:https : //developers.google.com/identity/protocols/oauth2/native-app#exchange-authorization-code
根据 SPA 的最新最佳实践 ( https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13 ),代码流 + PKCE 是处理身份验证的推荐方式。有没有人知道让 Google 的代码流接受 code_challenge 而不是 client_secret 所需的任何技巧?也许是一个虚假的秘密?
截至 2020 年 8 月,所引用的最佳实践文档仍处于草稿状态并正在积极更新 - 此处为主要修订:https ://datatracker.ietf.org/doc/draft-ietf-oauth-security-topics/ 。Googles 的 OAuth2 实现尚未应用 PKCE 应用于 Web 应用程序的“正在进行的工作”建议。SPA 仍然被指示使用 Google 在线文档中的隐式流:https : //developers.google.com/identity/protocols/oauth2/javascript-implicit-flow)。
PKCE 标准 ( https://tools.ietf.org/html/rfc7636 ) 详细说明,它是为了缓解移动平台上发现的授权代码拦截攻击而开发的,最初建议由本机客户端实施。Google 的“移动和桌面应用程序”文档确实指导开发人员使用 PKCE 授权代码流。使用带有 PKCE 的 Google Android、iOS 或 Windows 存储凭证类型的客户端可能会省略client_secret(请参阅刷新令牌参数表上的注释 - 并由 Cristiano 确认)。
现在认识到 PKCE 消除了任何公共客户端存储客户端机密的需要,因此可用于弃用隐式流,该流总是存在在重定向 URI 中包含返回的访问和身份令牌的缺陷。https://developer.okta.com/blog/2019/05/01/is-the-oauth-implicit-flow-dead。
IETF 文件草案在第 2.1.1 节中指出,这种认可可能会成为已发布的标准。
client_secret当最佳实践被接受时,希望谷歌将更新其实现以删除对PKCE 令牌请求的要求。与此同时,我们似乎别无选择,只能继续使用隐式流程编写 SPA。
好吧,我在使用此库的 Android 应用程序中使用 openId Connect 授权代码与 pkce ,而不使用 client_secret :https://github.com/openid/AppAuth-Android。
我只需确保使用清单中应用程序的包名称设置自定义方案,并使用它在 google 控制台上注册 android 凭据。
| 归档时间: |
|
| 查看次数: |
2218 次 |
| 最近记录: |