gpt4 book ai didi

oauth-2.0 - OAuth2 的客户端 JS 库如何维护安全认证?

转载 作者:行者123 更新时间:2023-12-03 08:41:55 28 4
gpt4 key购买 nike

我是 OAuth2 的新手,我一直在努力解决一个问题,尽管研究仍然无法掌握。

OAuth2 的 JS 客户端的困难在于您不能存储客户端密码,因为它可以在浏览器中广泛访问。 IE。在 this SO question评价最高的评论说:

"I think tokenSecret and consumerSekret parameters are supposed to be secret! How could they remain secret when downloaded to browser?!!!"



因此,如何使用 hello.js 等客户端 OAuth2 框架?或 oauth.io克服这个问题?我知道他们使用服务器端代理(知道 ID 和 secret )来处理他们的请求,但是客户端 JS 代码仍然需要以某种方式告诉代理它是谁。那么是什么阻止任何人从我的网站获取 JS 代码并代表我与代理交谈呢?

我还找到了 Google APIs Client Library for JavaScript . AFAIK 那里的客户端代码没有传递 secret 。我是否正确理解他们通过预定义的 OAuth 响应地址来管理这个? (以便始终通过预定义的 HTTP 地址返回 token )。因此,即使有人试图通过使用我的 ID 来冒充我的网站, token 仍然会返回到我的网站吗?

也许我在这里混淆了几个不同的主题,任何关于这个主题的光都将不胜感激。

最佳答案

OAuth2 中有一些不需要 secret 的流(例如 implicit 流通常用于基于 JS 的客户端、SPA 等)。不过,并非所有提供商都支持此流程,因此在这些情况下,您需要一个服务器端组件来为您协商,然后处理与您的前端/设备的交互。

在任何情况下,您都需要用户进行身份验证。 secret验证客户端(您的应用程序),而不是用户。返回 url(或回调)保护 token 发布到其他地方(仅限您的应用程序)。

这些流程的示例在这里:https://docs.auth0.com/protocols#5

更新:
“公共(public)客户端”有一个特定的代码/ token 交换协议(protocol),增加了额外的安全性:PKCE(它的工作原理在这里:https://auth0.com/docs/protocols#oauth2-pkce-for-public-clients)

关于oauth-2.0 - OAuth2 的客户端 JS 库如何维护安全认证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24724238/

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