移动客户端上的Aspnet Web API身份验证

时间:2013-04-22 17:11:08

标签: authentication azure asp.net-web-api

我正在使用ASP.net Web API实现API,我正在尝试在我的场景中找到适当的身份验证替代方案,如下所示:

  • 应该可以从移动客户端访问API
  • 移动客户端用户不应该登录,客户端是本机应用程序
  • 使用设备ID和用户ID组成的凭证授权API,使用其他方式在应用程序中获取,存储在SQL数据库中的有效凭据
  • 客户端不应存储静态凭据
  • API管理合理数据并且应该是安全的

所以我已经探索了一些选项,我发现通过SSL的基本身份验证就足够了,但有些人说这可能还不够,基于声明的解决方案会。

然后我研究了Azure ACS,我发现它有一些优点,但也许它对我的场景来说过于复杂?我仍然应该像基本身份验证一样创建身份提供者。样本流程(第二种方法):http://msdn.microsoft.com/en-us/library/gg429784.aspx

您怎么看?

由于

更新

我一直在考虑使用DotNetOpenOauth的实现并使用资源所有者密码授予,因此我可以在第一次使用设备ID和用户ID获取访问令牌而不存储凭据,服务器可以授权调用者在设备上调用它,这是正确的吗?

3 个答案:

答案 0 :(得分:2)

在VS 2013中,您可以使用“Asp MVC SPA应用程序”模板生成一个工作实现,该实现在登录时生成Oauth2令牌承载,并使用[Authorize]属性为WebApi控制器调用授权。它使用Membership和Entity Framework在SQL Server中本地存储用户和哈希。只需删除不需要的asp mvc部件,并保留WebApi的Auth部件。 更多细节在这里: http://msdnrss.thecoderblogs.com/2013/09/understanding-security-features-in-the-spa-template-for-vs2013-rc/

答案 1 :(得分:1)

我使用asp.net mvc 4.0 / web api基本会员资格做到了。你会发现它很有帮助。

https://github.com/aamir-poswal/Mobile-Apps-Authentication-Authorization-ASP.NET-WEB-MVC-4.0

答案 2 :(得分:0)

不存储凭据是一个好主意。您可以查看IdentityServer,它支持资源所有者,隐式和代码流:

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