Web API 身份验证最佳实践

Posted

技术标签:

【中文标题】Web API 身份验证最佳实践【英文标题】:Web API Authentication best practice 【发布时间】:2012-08-26 16:41:36 【问题描述】:

考虑到数据安全性至关重要且 ASP.NET 应用程序在 Azure 上运行,哪一种是 Web API 的最佳身份验证方法?

【问题讨论】:

【参考方案1】:

在处理身份验证和保护您的 Web API 时,我建议您遵循 Dominick Baier 设置的准则。世界上可能没有比这更好的 ASP.NET 身份管理专家了。

您可以在 http://leastprivilege.com/ 找到他的博客,在 Nuget 找到一个很棒的 Web API 身份包 Thinktecture.IdentityModel - http://nuget.org/packages/Thinktecture.IdentityModel 与大多数优秀的开源库一样,由于您可以免费使用所有功能,因此无需重新发明***。

这是一个自上而下的身份和访问控制库,适用于 .NET 4.0/WIF 和 .NET 4.5(包括对 MVC 和 Web API 的支持)。

如果您想了解有关保护 Web API 的更多信息,还应该观看此视频 http://vimeo.com/43603474 - Dominick 在 NDC Oslo 2012 上的演讲。

【讨论】:

【参考方案2】:

这样的问题非常“开放”,这完全取决于您项目的要求。如果您想要安全,您应该考虑组合不同的安全措施。

将 HTTPS 与Multi-factor authentication 结合使用。一个示例是客户端证书身份验证(存储在加密狗上的私钥)和基本身份验证(用户名/密码)。这可以确保即使恶意人员获取用户名和密码,他也无法在没有硬件加密狗的情况下访问应用程序。反之亦然,即使硬件令牌被盗,不知道用户名和密码也无济于事。

这些可能是一些不错的博客文章,可以帮助您入门:

Making your ASP.NET Web API’s secure Securing ASP.NET WebAPI using Client Certificates

即使这通常适用于网络,您也应该先阅读the OWASP Top 10 for .NET developers,然后再继续阅读其他内容。

【讨论】:

以上是关于Web API 身份验证最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

Web 服务客户端证书/身份验证最佳实践的解决方案

API测试最佳实践 - 身份验证

为同一 API 混合多个身份验证模型是最佳实践吗? [关闭]

用于身份验证的 REST API URL 的最佳实践

自定义 REST 服务的 API 身份验证最佳实践

Swift iOS 应用程序到 REST PHP API - 身份验证的最佳实践是啥?