休息API认证机制,做什么

Rest API authentication mechanism, what to do

我最近阅读了很多关于 WEB API 身份验证机制的文章,我对如何实现我的 Web API 身份验证机制有点困惑,我正在考虑使用基于令牌的身份验证,但我不确定它是否是正确的选择。

基本上我的 Web API 将管理所有需要的操作,它将存储我网站的用户以及 API 用户(以防他们必须分开)。

我要支持以下

用户可以使用他们的 G+ 或 Facebook 帐户或已经在我的服务中创建的用户名在我的网站和应用程序上注册,他们也将使用他们的社交帐户登录。 如果用户未登录,他们将无法 post 项目,但他们将能够看到项目,想想 Craiglist 之类的东西。 假设用户是一名开发人员,他们希望通过他们创建的某些软件 post 项目,而不是通过网站一次 post 一个项目,我如何允许这样做? 现在,我的问题是:1) 当用户在我的网站上注册时,我是否必须为其后续访问令牌创建一个(public 密钥/密钥),以便我可以使用我的 API网站作为用户检查他们是否可以访问某些端点?

2) 我是否必须为我的网站分配一个(public 密钥/密钥)以便在用户未登录时使用 API?

3) 与上述移动应用相同

4) 我如何允许用户使用 G+ 或 Facebook(注册/登录)?如果他们使用任何社交网络登录,我将如何保护我的 api?

拜托,任何答案将不胜感激。

谢谢

按照本教程来满足您的大部分要求 http://bitoftech.net/2015/01/21/asp-net-identity-2-with-asp-net-web-api-2-accounts-management/ 通过 facebook/G+ MVC 登录已将助手注释掉。您可以通过第三方应用程序设置密钥来获取凭据,然后存储身份。

对于 ASP.NET Web API 2,我建议您使用默认的 Owin OAuth2 身份验证。这是一种标准的身份验证形式,有据可查。如果您对 OAuth2 的了解不够,请阅读 RFC.

在 Web API 2 中,ASP.NET 迁移到一个新的安全模型,称为 ASP.NET Identity. There is this really good video,它解释了基础知识。重点是从头开始,忽略传统的基本、表单或windows身份验证。

多多学习material就ASP.NETwebsite了。 对于本地个人帐户(问题 #1、#2 和 #3),请仔细阅读 tutorial - 这里基本上您自己的服务器将充当 OAuth 授权服务器,Owin OAuth2 实现将负责生成访问令牌并验证它们。由于您将使用 OAuth 2 标准,因此移动设备也基本相同。

对于外部帐户(问题 #4),请通读此 tutorial。各大提供商都有第三方认证的官方库:

  • Microsoft.Owin.Security.Facebook
  • Microsoft.Owin.Security.Google
  • Microsoft.Owin.Security.Twitter
  • Microsoft.Owin.Security.MicrosoftAccount

了解更多信息并了解新的 OWIN 规范也会有所帮助,该规范描述了需要如何为 .NET 框架和 Katana 项目(Microsoft 的 OWIN 实现)创建 Web 应用程序。