如何将身份验证添加到具有现有用户的ASP .NET Web API?

8 浏览
0 Comments

如何将身份验证添加到具有现有用户的ASP .NET Web API?

我在我们自己的自定义数据库中存储了用户。

我开发了一个ASP .NET Web 2 API。

我没有现有的网站,客户端也不使用浏览器(因此无法使用Forms身份验证)。

我需要使用现有的用户,所以不能使用ASP .NET的Identity,因为它使用自己的表格。

我应该如何最好地为我的API添加身份验证?我想利用现有的基础设施,如Authorize属性。

(这个问题:User Authentication in ASP.NET Web API不能回答我的问题,因为它提出的身份验证方式只有Forms身份验证和Windows集成身份验证,而我都不能使用)。

0
0 Comments

ASP .NET Web API是一种用于构建基于HTTP的服务的框架。在使用Web API时,有时需要为API添加身份验证机制,以确保只有经过授权的用户才能访问API。本文将介绍如何为ASP .NET Web API添加身份验证,并提供了一个示例代码。

问题的原因是作者想要在消息处理程序中使用自定义的身份验证机制。由于不知道安全级别的要求,无法确定应该使用什么样的机制。如果使用了SSL,那么基本身份验证可能就足够了。因此,作者提供了一个简单的基本身份验证处理程序的示例代码。

解决方法是创建一个继承自DelegatingHandler的类,重写其SendAsync方法。在这个方法中,首先获取请求头中的Authorization信息,并解析出用户名和密码。然后,可以根据自定义的用户存储来验证提供的凭据。如果凭据验证通过,就将当前用户设置为已认证,并继续处理请求。如果凭据验证失败,就返回未经授权的状态码,并添加WWW-Authenticate头,提示客户端进行身份验证。

为了应用这个消息处理程序,需要在全局应用配置中添加它。可以在Application_Start方法中,通过GlobalConfiguration.Configuration.MessageHandlers属性来添加处理程序。

需要注意的是,提供的示例只是一个示例,实际使用时需要根据具体需求进行相应的修改。

0