.NET WebAPI 和 http 基本身份验证

Posted

技术标签:

【中文标题】.NET WebAPI 和 http 基本身份验证【英文标题】:.NET WebAPI and http basic authentication 【发布时间】:2015-10-01 06:29:38 【问题描述】:

我创建了一个WEBAPI 解决方案,并且正在创建 html 页面来访问该 Web 服务的所有功能。我正在使用 http 基本身份验证。

我有这些选项

    usernamepassword 保存在 javascript 变量中,并在我每次调用任何 WEBAPI 函数时发送它们。 第一次发送usernamepassword,在服务器上创建一个token并发回客户端,然后保存为cookie,每次调用WEBAPI函数时使用。 不要使用 HTTP 基本身份验证。

处理此问题的最佳方法是什么? 谢谢

【问题讨论】:

你试过什么?我们在这里是为了帮助您解决问题,而不是编写一大堆代码。 谢谢,我不想要代码,我想要建筑设计的答案。其实我知道怎么做这3个选项,只是想知道根据这个社区忍者的经验,最好的方法是什么?再次感谢 【参考方案1】:

出于安全原因,您不想在每次通话时都发送用户名/密码。基于令牌的身份验证将是可行的方法,您可以为此使用内置身份验证。

我找到的最好的教程是http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/

【讨论】:

谢谢,我去看看【参考方案2】:

使用基本身份验证没有任何问题,只要它是通过安全通道完成的。如果您在每次调用时都发送用户名和密码,那么您的 api 将需要在每次调用时访问数据库以验证用户身份。如果在用户通过身份验证时发送令牌,则无需在后续调用中访问数据库。

使用令牌还允许您利用身份提供者(例如 Thinktecture's IdentityServer)来提供单点登录。如果您有多个系统,它将允许用户登录一次然后访问任何应用程序,它可以大大简化安全性。

【讨论】:

wep API 是否有能力保留该令牌并在每次收到某些请求时对其进行验证?

以上是关于.NET WebAPI 和 http 基本身份验证的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core WebAPI 依赖注入解析 null

Angular 7 .net 核心 2.2 WebApi Windows 身份验证 CORS

ASP.Net Core - 使用 WebAPI 和 MVC 前端的 JWT 身份验证不起作用

使用 Asp.Net 下的 owin 和 LinkedIn 身份验证提供程序进行 WebApi 身份验证

如何制作针对 ASP.NET WebAPI 进行身份验证的客户端?

Web API 身份验证最佳实践