【问题标题】:Appropriate OAuth2 flow for JavaScript API client适用于 JavaScript API 客户端的 OAuth2 流程
【发布时间】:2011-12-27 10:31:35
【问题描述】:

阅读最新的 OAuth2 草案后,我不确定哪个流程适合我正在开发的客户端,或者 OAuth 是否适合。从我们的 API 提供的数据不是特定于用户的;拥有凭据只是授予用户访问我们数据的权限。

我正在构建的 JS 客户端将是一个不需要用户进行身份验证的公共页面。相反,“用户”是 JS 客户端本身。也就是说,有一个专门的帐户供此应用访问我们的 API。

目前我只是添加一个带有 HTTP Basic 凭据的 Authorization 标头,这有很多原因很糟糕。最重要的是,任何人都可以很容易地提取用户名和密码。

我在该场景的 OAuth 草案中看到的最接近的匹配项是隐式授权授予,但操作用户代理(Web 浏览器)的人似乎仍然必须与页面交互才能获得访问令牌。不得不说,单击一个按钮,然后往返到身份验证服务器,然后返回到 JS 客户端(通过redirect_uri)是不合适的。

另一方面,由于无法使用私钥(因为它是 JS),我无法想象如果不使用 redirect_uri 来验证客户端。

有人能帮我纠正一下吗?

【问题讨论】:

  • 这看起来像是一个简单 cookie 的案例。创建一个一次性密钥,交给每个客户,几小时后过期(并在页面上根据需要更新)。

标签: javascript api oauth


【解决方案1】:

访问令牌在 url 片段中传递给您的 redirect_uri。可以通过解析window.location.hash值来获取。

另一方面,由于无法使用私钥(因为它是 JS),我无法想象不使用 redirect_uri 的情况下如何验证客户端。

隐式授权类型不对客户端进行身份验证。在某些情况下,可以通过用于将访问令牌传递给客户端的 redirct_uri 来验证客户端身份。它依赖于资源所有者(其凭据)的存在和重定向 URI 的注册。在此流程中需要 redirect_uri。一些 SDK 说它是“可选的”,因为它们有一个默认配置,通常是 API 服务所在的同一个域,或者是在资源提供者上预先配置的。

【讨论】:

    猜你喜欢
    • 2011-07-25
    • 2020-01-31
    • 2015-08-11
    • 2021-12-22
    • 1970-01-01
    • 2018-08-03
    • 2012-08-08
    • 1970-01-01
    • 2014-10-04
    相关资源
    最近更新 更多