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

trn*_*son 2 asp.net security openid oauth asp.net-web-api

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

这是我的情景:

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

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

我的问题是:

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

我想总结一下:

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

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

小智 5

看看ThinkTecture的Identity Server

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

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

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

这似乎是一个完美的契合 - 希望这会有所帮助.

马特