【问题标题】:OAuth2: Protecting non-user resourcesOAuth2:保护非用户资源
【发布时间】:2015-12-03 01:58:53
【问题描述】:

我有一个 API。假设它允许用户在排行榜上更新他们的分数。这使用 OAuth2。

代表用户使用 OAuth2 的客户端拥有 32 个字符的 ID 和密码。

我还有一些“公共”资源,不归用户所有。比如说获得整体排行榜。

我希望客户能够通过 API 访问它们。然而,这些客户可能不是用户(其他网站说),实现 OAuth 流程似乎过于复杂。但是,我还希望客户能够表明自己的身份,以跟踪谁在使用它,并在需要时实施例如费率检查。

OAuth2 中有什么允许这样做的吗? client_credentials 用于“受信任的客户”,而这些不会是这样的。

或者,我是否对这些端点使用不同形式的身份验证,以便客户端执行授权:令牌 [CLIENT_ID] 而不是授权:承载 [OAUTH2_TOKEN]?

【问题讨论】:

    标签: api rest oauth-2.0


    【解决方案1】:

    对于不受保护的资源,您可以将它们放到互联网上,无需任何 OAuth 保护。

    但是,如果您这样做,您将无法真正信任客户发送给您的信息。所以这取决于验证他们发送的客户端 ID 的重要性。

    如果是为了节流,这可能足以证明通过 OAuth 运行它,这样就不会有人在他们的客户端 ID 上撒谎并窃取其他人的带宽。但这是一个判断电话。

    如果您需要信任他们发送的信息,即使它只是一个标识符,那么您最好让他们发送他们的访问令牌,而不是提出一个特殊的协议和定义不同的令牌。

    或者只是相信他们发送的 ID。

    【讨论】:

    • 嗯。好点子。他们可能不得不用他们的 client_id 交换令牌。看起来 Twitter 在纯应用程序身份验证方面做了类似的事情:dev.twitter.com/oauth/application-only
    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 2020-11-30
    • 1970-01-01
    • 2012-11-23
    • 2013-10-02
    • 2015-03-19
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多