ASP.NET Web API 授权和身份验证

Posted

技术标签:

【中文标题】ASP.NET Web API 授权和身份验证【英文标题】:ASP.NET Web API authorization and Authentication 【发布时间】:2012-09-10 16:52:30 【问题描述】:

我正在尝试构建一个安全的 asp.net web api。您可以找到很多方法来保护您的 API,但我想知道在我的案例中实现这一点的最佳方法或“行业标准”是什么。

这是我的要求 - API 将被少数第三方开发者用于网站/移动应用等。 - 想要使用此 API 的开发人员必须获得访问 API 的密钥(授权) - 用户(访客/消费者)必须登录第三方应用程序才能查看他们的个性化信息。 - API 将使用 ASP 会员数据库来管理/验证用户。

我知道可以使用 http 基本身份验证来对用户进行身份验证,但是如何实现 API 的授权部分?

OAuth 2.0 是一个解决方案吗?

【问题讨论】:

【参考方案1】:

有一篇很好的文章描述了使用令牌/密钥进行身份验证/授权:

Making your ASP.NET Web API’s secure

它还描述了有关 ASP.NET Web API 安全性的其他一些良好做法。

【讨论】:

【参考方案2】:

我还建议使用可以支持以下内容的Thinktecture.IndentityModel.40 库:

基础

Base64Url 编码 纪元日期时间转换 随机数生成 时间常数字符串比较

声明

匿名声明主体 身份验证即时声明 基于声明的授权

常数

在处理算法、日期时间格式、JWT、SWT、WS-Security 和 WS-Trust 时有用的常量

扩展方法

XML(往返于 XmlReader、XmlDocument、XDocument) WS-Trust RSTR 安全令牌转换 X.509 证书

【讨论】:

以上是关于ASP.NET Web API 授权和身份验证的主要内容,如果未能解决你的问题,请参考以下文章

ASP.net Web API RESTful Web 服务 + 基本身份验证

使用成员资格提供程序的 ASP.NET MVC 4 Web API 身份验证

ASP.NET Web API:返回 401/未授权响应的正确方法

是否可以在没有 web.sitemap 的情况下进行基于 ASP.NET 角色的表单身份验证和授权?

Web API 身份验证(无 asp.net 身份)

使用 ASP.NET Core 后端和 React 前端的 Web 应用程序中的授权和身份验证?