Rest API 认证机制,怎么办

Posted

技术标签:

【中文标题】Rest API 认证机制,怎么办【英文标题】:Rest API authentication mechanism, what to do 【发布时间】:2016-06-09 02:14:35 【问题描述】:

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

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

我想支持以下

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

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

3) 移动应用同上

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

请,任何答案将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

对于 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 框架和 Katana 项目(微软的 OWIN 实现)创建 Web 应用程序。

【讨论】:

任何人都可以重写这个答案,记住 Django 和 DRF 吗?或者如果我需要在 Django 中完成此操作,请指向一个有用的链接?任何帮助表示赞赏?【参考方案2】:

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

【讨论】:

以上是关于Rest API 认证机制,怎么办的主要内容,如果未能解决你的问题,请参考以下文章

Oracle REST Data Services (ORDS) 安全认证机制

编写 Node.js Rest API 的 10 个最佳实践

PAM认证机制

PAM认证机制

PAM 认证机制

PAM认证机制