我有一个带有简单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的掌握不足,无法决定我是否使事情变得过于复杂,或者我试图做的事是做事的好坏。
有人可以至少给我提供我需要采取的步骤的广泛概述,或者我应该怎么看才能实现这一目标?还是让我指点一些教程?还是高估我的建议,并告诉我我正在(架构上)解决所有错误?