匿名用户的OAuth

ale*_*m92 2 security authentication oauth

让我们说我们有一个应用程序(网络/移动/桌面),用户永远不会登录/注册,但我们仍然想让他访问一些资源,例如做一个POST /v1/users.

为了做那个POST,客户需要一个access_token.OAuth如何在这里工作?还是应该使用其他认证机制?

Tak*_*aki 7

如果您的Web API(受保护资源端点)不关心访问用户是谁,换句话说,如果呈现给Web API的访问令牌不必与任何用户关联,请实现客户端凭据授权,是RFC 6749中定义的流程之一,用于发布此类访问令牌.


Chr*_*rri 6

此答案适用于任何类型的身份验证、OAuth 或其他。

身份验证的本质是客户端持有服务器可以验证的密钥,从而允许访问受保护的资源。客户端自然会将此密钥保密,否则任何人都可以访问属于他们的受保护资源。

如果您的客户没有以某种方式注册,则没有密钥。但是,没有必要进行明确的注册/登录。您的应用程序可以简单地找到一些唯一标识符,并在服务器上静默注册并接收访问令牌。整个过程对用户隐藏。

但是,如果您的数据随时可用,并且任何人都可以访问它,您可能需要考虑不使用任何身份验证。如果您要问的是您只想从一个特定的应用程序访问,那么您需要包含来自该应用程序的某种形式的共享访问令牌,服务器可以检查该令牌。这不是 100%,因为任何可以从您的应用程序读取代码或扫描 http 流量的人理论上都可以获得该访问令牌,但您可能会让普通用户难以这样做。SSL 极大地有助于保护此过程。

  • 请更准确。OAuth2 区分客户端(=应用程序)和资源所有者(=用户)。客户端可以有一个可选的客户端密钥,资源所有者通常有一个密码。 (2认同)