使用Restful asp.net Web api和安全API进行用户登录身份验证

Gee*_*ets 9 c# asp.net authentication api rest

我正在学习使用AngularJS前端框架开发asp.net Web API.我已经对此进行了大量的研究了大约一个星期了.我已经阅读了关于oauth 2,owin和其他的内容.但现在困惑哪个更好.

我有几个问题,希望你们能帮助我.

1)在我的应用程序中 - 只有注册用户才能通过电子邮件和密码登录访问应用程序.有人可以指点我一个关于如何使用API​​创建良好的注册和登录身份验证的好资源或文章.这是足够安全的,因为我将收集用户数据并存储它们.

2)我需要什么类型的安全保护我的API,首先API将在防火墙后面,然后一个项目完成它将向世界开放?如果可能的话,请指出正确的方向.

请注意这不是一个重复的问题,我已经通过stackoverflow上的大部分帖子,并在我找不到答案后问这个.

对此有任何建议或帮助表示赞赏.

感谢您对此主题的所有努力

Vik*_*eni 28

您可以使用Asp.Net Web API 2,OWIN,Asp.Net Identity和AngularJS使用基于令牌的身份验证.

Asp.Net Web API现在完全支持OWIN.Katana是微软的OWIN实现.

Asp.Net Web API现在支持使用OAuth 2.0进行授权.使用Microsoft OWIN组件可以实现OAuth.

你是否对Identity,OWIN,OAuth这两个术语感到困惑......这里是对它们的简要概述.

开发Asp.Net Identity是为了克服asp.net会员系统的问题.Asp.Net Identity允许我们使用不同的存储(表存储,无SQL),并允许我们使用外部身份提供程序,因为它使用OWIN.

OWIN将打破Ash.Net和IIS的紧密耦合.OWIN只是一个规范.Katana是微软的OWIN实现.OWIN位于http请求管道中.OWIN管道有中间件组件,我们可以提到外部登录机制.

创建OAuth是为了消除用户与第三方应用程序共享密码的需要.

注意: 这里Asp.Net Identity与OWIN,OAuth无关,反之亦然.它们是三个独立的概念.Asp.Net Identity是微软的实现.OWIN,OAuth是开放的标准概念.因为Microsoft已经实现了OWIN,所以OAuth成为可能.

因此,Web API 2使用OAuth承载令牌而不是表单身份验证cookie,这在Web API世界中更为正确.因为它允许使用各种终端用户设备,如移动设备.

在您的情况下,您可以使用visual studio 2013中提供的默认模板
.1.创建新项目并选择Asp.Net Web应用程序.
2.选择Web API或SPA模板.
3.更改身份验证并选择单个用户帐户.
4.单击"确定".

现在,默认情况下配置所有内容以使用OWIN,Asp.Net Identity,OAuth.因为我们使用基于令牌的身份验证,您可以发现帐户控制器中没有可用的登录方法.

  1. 要注册用户,请使用AccountController中提供的Register方法
  2. 要登录,您需要将以下格式的数据发布到 http://example.com/token(可以在StartUp.Auth.cs中配置)
    grant_type = password&username = Alice&password = password123
  3. 登录后,我们会收到持有者令牌,我们需要使用授权标头发送每个请求以访问受保护资源.

当您使用令人敬畏的前端框架AngularJs时,您可以将承载令牌保存在本地存储中,并且您可以编写一个http拦截器服务,该服务负责为每个请求发送承载令牌.

这里注册用户由Asp.Net标识负责,默认情况下,OAuthAuthorizationServer负责认证用户,该服务器存在于Providers文件夹中.

我们收到的持票人代币并非针对特定客户,因此任何人都可以拦截它们.因此,仅在SSL上使用它们.

请仔细阅读此链接

http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp -net-web的API-2-owin-ASP净同一性/