有关ASP.NET Web API RESTful服务上的OpenID / OAuth的建议

时间:2013-10-07 21:00:07

标签: asp.net security oauth asp.net-web-api openid

我一直在阅读很多关于OpenID和OAuth的内容,但却无法就如何在基于服务的架构中使用它们进行一些联系。

这是我的情景:

  • 我正在编写新的ASP.NET Web API服务(RESTful / JSON)
  • 这些服务将由客户端应用程序(当前的桌面网站,新的移动网站,以及将来可能的PHP网站或仅限JavaScript的客户端)使用。
  • 我们的桌面网站目前使用ASP.NET成员资格提供程序(webforms)

我们正在创建的新API服务集应该处理所有事情,包括身份验证和授权。

我的问题是:

  • 由于我们明确控制访问API的客户端应用程序(即,这不是公共API,而是用于集成已批准的合作伙伴),我们是否一定需要OAuth?
  • OpenID会替换我们的.NET Membership功能,还是补充它?
  • 鉴于我们需要使用成员资格提供程序使用遗留系统对用户进行身份验证,我们是否需要使用某种.NET成员身份OpenID提供程序,或者我们只是像往常一样进行身份验证并向用户授予像我们当前一样的成员身份令牌办?

我想总结一下:

  • 我正在写一些新服务
  • 对于该客户端应用程序的用户,任何已批准的客户端应用程序都应该可以使用它们
  • 我们需要继续支持我们的.NET成员资格数据

对不起,这些是基本问题,但我确信它们很容易回答。谢谢!

1 个答案:

答案 0 :(得分:5)

查看ThinkTecture的Identity Server

https://github.com/thinktecture/Thinktecture.IdentityServer.v2

它使用存储库模式用于用户存储,并使用默认成员资格提供程序作为用户存储 - 您可以轻松插入您的旧成员资格提供程序。

OpenID connect可以在您的会员提供商之上运行,并且您启用该选项只允许注册的依赖方 - 这意味着只有您批准的客户(应用程序)才能访问。

这看起来非常合适 - 希望这会有所帮助。

马特