我们目前正在实施OAuth2以保护我们的新API,并且不确定如何安全地提供所需的功能。我们需要从移动设备允许以下内容:
在下载应用程序后,用户可以立即拍照并提交,无需先登录。
虽然我们希望允许匿名用户访问,但用户无需登录或注册以使用某些功能,但我们不希望允许对API进行未经身份验证的访问。这通常可以使用client credentials authorization flow来获取和app访问令牌,但这需要知道客户端密钥。根据我的阅读,移动设备不被视为可信客户端,不应包含客户端密钥,因此无法自行生成应用访问令牌。
我们已经提出了一些选项来完成这个要求,但是想要一些输入:
如何使用OAuth2从移动设备安全地验证对API的访问权限,而无需用户首次登录?
答案 0 :(得分:2)
同意对Q的评论。或者:
1。)在OAuth 2中使用客户端凭据授予类型 - 在您的应用程序中使用嵌入的秘密。了解这不是超级安全,有人会最终对其进行逆向工程。理想情况下,每个客户都会得到一个独特的秘密 - 所以如果他们滥用它,你可以撤销客户。
2.。)该API处于打开状态 - 因此根本不需要OAuth 2访问令牌。也许只有你的应用程序才能知道这个API - 但同样,有人反向设计它只是时间问题。
答案 1 :(得分:2)
我的小组正在进行类似的讨论。用户无需登录即可获取应用程序并浏览目录。目录和其他数据通过API访问,我们希望强制用户为所有呼叫设置access_token。
我们目前的想法是
所以例如......
access_token = api.oAuth.client_credentials(clientId, secret)
catalog = api.getCatalog(access_token)
authenticated_access_token = api.oAuth.password(clientId, secret, username, password, access_token)