假设我们有一个应用程序(网络/移动/桌面),用户从不登录/注册,但我们仍然想让他访问一些资源,例如做一个POST /v1/users
。 / p>
为了执行该POST,客户端需要access_token
。 OAuth如何在这里工作?或者应该使用其他认证机制?
答案 0 :(得分:6)
如果您的Web API(受保护的资源端点)不关心访问用户是谁,换句话说,如果提供给您的Web API的访问令牌不必与任何用户相关联,实施Client Credentials Grant,这是RFC 6749中定义的流程之一,以发布此类访问令牌。
答案 1 :(得分:3)
此答案适用于任何类型的身份验证,OAuth或其他。
身份验证的本质是客户端持有服务器可以验证的密钥,从而允许访问受保护的资源。客户端自然保密这个密钥,否则任何人都可以访问属于他们的受保护资源。
如果您的客户没有以某种方式注册,则没有密钥。但是,没有必要进行明确的注册/登录。您的应用程序只需找到一些唯一标识符,然后静默注册服务器并接收访问令牌。整个过程对用户是隐藏的。
但是,如果您的数据随时可用,并且任何人都可以访问它,您可能需要考虑不使用任何身份验证。如果您要求的是您只想从一个特定应用程序访问,那么您需要从该应用程序中包含某种形式的共享访问令牌,服务器可以检查该令牌。这不是100%,因为任何能够从您的应用程序读取代码或扫描http流量的人理论上都可以获得该访问令牌,但是您可以让普通用户难以这样做。 SSL有助于确保此过程的安全。