2016-05-13 66 views
2

假设我们有一个应用程序(网页/手机/桌面),用户永远不会登录/注册,但我们仍然想让他访问某些资源,例如以POST /v1/users为例。匿名用户的OAuth

为了做到这一点,客户需要一个access_token。 OAuth如何在这里工作?或者应该使用其他认证机制?

回答

2

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

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

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

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

+0

请更准确。 OAuth2区分客户端(= App)和资源所有者(= User)。客户端可以拥有可选的客户端密钥,资源所有者通常拥有密码。 –

5

如果您的Web API(受保护的资源端点)不关心访问用户是谁,换句话说,如果访问令牌提交给您的Web API不必与任何用户关联,请执行Client Credentials Grant ,这是RFC 6749中定义的流程之一,可以发出这样的访问令牌。