Rest API认证机制,做什么

时间:2016-02-26 01:52:55

标签: api authentication authorization asp.net-web-api2 restful-authentication

我最近一直在阅读有关WEB API身份验证机制的内容,我对如何实现我的Web API身份验证机制感到有点困惑,我正在考虑使用基于令牌的身份验证,但我和#39;我不确定它是否是正确的选择。

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

我想支持以下

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

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

3)与上面的移动应用程序相同

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

请,任何答案都将非常感谢。

由于

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

使用Web API 2,ASP.NET转移到一个名为ASP.NET Identity的新安全模型。有一个非常好的video解释了基础知识。重点是从头开始,忽略传统的基本,表单或Windows身份验证。

很多学习资料都在ASP.NET website上。 对于本地个人帐户(问题#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框架创建Web应用程序以及Katana项目(Microsoft的OWIN实现)将有所帮助。