我有一个带有简单的 REST API 的产品,这样产品的用户就可以直接集成产品的特性,而无需使用我的 web 用户界面。
最近,我已经得到了各种第三方的兴趣,集成他们的桌面客户端与 API,以允许我的产品的用户访问他们的数据使用第三方应用程序。
我已经看到,希望使用 Twitter 的应用程序使用 Twitter 托管的登录页面进行身份验证,该登录页面授予特定的应用程序访问该用户数据的权限。单击“允许”或“拒绝”按钮,身份验证过程完成。据我所知,Facebook 使用的是同样的机制。
在进一步的研究中,这似乎是 OAuth 在运行,并且看起来我的 API 是。基于 Net,我认为我应该使用 DotNetOpenAuth 并提供类似的机制。不幸的是,这些示例文档很少(如果有的话) ,我在网上找到的唯一的教程似乎是专注于帮助你为你的用户提供一个登录机制,这样他们就可以通过第三方提供商登录你的网站。
我想做的是让我的 REST API 处理我的 web 应用程序的所有核心认证和业务逻辑,并且在表面下,我的 web 应用程序本质上是另一个通过 OAuth 使用 API 的应用程序。用户可以在网站上直接使用用户名和密码进行身份验证,或者通过第三方提供商(如 MyOpenID 或 Facebook)进行身份验证,然后网站以某种方式使用返回的令牌针对 REST API 进行身份验证。
它基本上看起来像我需要我的 API 以某种方式托管一个 OAuth 服务,但也有用户使用第三方 OAuth 服务。我情不自禁地想,我对 OAuth 的理解还不够,无法判断我是否将事情过于复杂,或者我正在尝试做的事情是一种好的方式还是一种坏的方式。
有没有人能至少给我一个我需要采取的步骤的大致概述,或者我应该注意什么来实现这一点?或者给我指点一些教程?或者抨击我的提议,告诉我我在这方面(结构上)完全错了?