我正在为我们的产品编写一个 API,并试图了解一些基本的 OAuth 如何与可能利用我们的(待创建的)api 的移动应用程序有关。
让我们想象一下,我们的网站目前允许一个人通过 Twitter OAuth 登录到我们的网站。在来自 Twitter 的回调中,我们的服务器检索 twitter OAuth 结果,如果一切正常,则检查该用户是否已存在于我们的数据库中(例如,假设电子邮件是唯一键)。如果它们不存在,我们创建一个新用户。
当然,然后我们将用户“登录”,这意味着我们为他们创建了一个 cookie,用于他们的浏览器。
到目前为止 - 这里没有什么新鲜事。都是正常的东西。
现在 .. 如果我们想通过 iPhone 或 Windows 手机使用他们的母语并且应用程序使用我们的 API,我不确定 OAuth 的结束点和我们的 API 接管?
例如,假设它是一个利用我们 API 的 iPhone 应用程序。iPhone 应用程序将尝试根据用户的 Twitter 信誉对用户进行身份验证。好的。但是当它回调时,它又回到了电话中,对吗?不是我们的服务器。那么应用程序需要尝试创建一个新用户吗?那么 iPhone 可能会尝试调用/api/CreateAccount
. 但这意味着 - 任何人 - 都可以调用这个 api?该网站如何真正知道他们已通过身份验证?仅仅因为应用程序这么说?有什么办法可以阻止人们创建恶意应用程序并通过大量创建新帐户来调用我们的 API?那么对 api 资源的身份验证呢?表单身份验证在此处不可用。那么人们是否在 api 调用中使用基于 SSL 的查询字符串身份验证?iphone 如何通过 -our- 服务器进行身份验证?
我很混乱。
谁能解释一下人们现在拥有网站和 api 时所做的差异和常见做法 .. 并使用 OAuth 作为身份验证机制,好吗?