2

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

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

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

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

你怎么看?

谢谢

更新:

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

4

3 回答 3

2

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

于 2013-11-20T12:06:57.470 回答
1

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

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

于 2013-08-24T10:16:18.313 回答
0

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

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

于 2013-04-23T01:55:18.167 回答