我正在使用 ASP.net Web API 实现一个 API,并且我正在尝试在我的场景中找到适当的身份验证替代方案,如下所示:
- 该 API 应可从移动客户端访问
- 移动客户端用户不应登录,该客户端是 native 应用
- API 通过由设备 ID 和用户 ID 组成的凭据进行授权,这些凭据通过其他方式在应用内获取,有效凭据存储在 SQL 数据库中
- 客户端不应存储静态凭据
- API 管理敏感数据并且应该是安全的
因此,我探索了一些选项,发现通过 SSL 进行基本身份验证就足够了,但有些人说这可能还不够,基于声明的解决方案就足够了。
然后我探索了 Azure ACS,发现它有一些优势,但对于我的场景来说可能过于复杂?我仍然应该像基本身份验证一样创建一个身份提供者。示例流程(第二种方法):http://msdn.microsoft.com/en-us/library/gg429784.aspx
你觉得怎么样?
谢谢
更新:
我一直在考虑使用 DotNetOpenOauth 的实现并使用资源所有者密码授予,这样我就可以在第一次使用设备 ID 和用户 ID 来获取访问 token 而不存储凭据,服务器可以基于调用者授权在调用它的设备上,这是正确的吗?
最佳答案
在 VS 2013 中,您可以使用“Asp MVC SPA 应用程序”模板生成一个工作实现,该实现在登录时生成 Oauth2 token 承载并使用 [Authorize] 属性授权其进行 WebApi Controller 调用。它使用成员资格和 Entity Framework 将用户和哈希值本地存储在 SQL Server 中。只需删除不需要的 asp mvc 部分并保留 WebApi 的 Auth 部分即可。 更多详细信息请参见此处: http://msdnrss.thecoderblogs.com/2013/09/understanding-security-features-in-the-spa-template-for-vs2013-rc/
关于authentication - 移动客户端上的 Aspnet Web API 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16152790/