使用Web API进行身份验证

时间:2014-09-23 18:33:27

标签: asp.net asp.net-web-api

我正在使用ASP.NET WebAPI来构建我正在构建的Web服务。他的Web服务将使用Identity服务对用户进行身份验证。

我对如何在外部验证用户感到有些困惑。我们当前的系统非常基础 - 我们在XML请求中将用户名和密码作为单独的字段发送,并且所有这些都在1个请求中完成。

从我在Google上看到的情况看,最好的方法是从Ali请求令牌,然后在后续请求中传递此令牌。有没有办法可以在1个请求中完成所有操作(即,在单个请求中向API发送我的数据请求以及用户名/密码或API密钥?)

2 个答案:

答案 0 :(得分:0)

  

从我在Google上看到的情况来看,最好的方法是请求   来自Ali的令牌,然后在后续请求中传递此令牌。   有没有办法我可以在1个请求中完成所有操作(即发送到   API我的数据请求以及用户名/密码或   也许是单个请求中的API密钥?)

我不确定您的网络服务为何要在基于令牌的身份验证中了解用户的用户名和密码。

在基于令牌的身份验证中,您的网络服务不应询问用户的用户名和密码。

相反,用户首先使用您的服务信任的令牌颁发者来验证用户名和密码。

成功验证后,令牌发行者会向用户提供令牌。一旦用户拥有该令牌,它就会使用它来呼叫您的服务。

为此,您不必重新发明轮子。以下是OAuth2和OpenId Connect的JwtAuthForWebAPI nuget包。

答案 1 :(得分:0)

根据每个请求继续发送用户名/密码根本不安全,您需要配置api以在指定的生命周期(即24小时)内发出访问令牌。为此,您需要创建和结束点(/ token)接受用户名/密码验证组合,然后发出访问令牌。 接收此访问令牌的客户端负责安全存储,并使用承载方案使用请求“授权”头将每个请求发送到任何受保护资源。

同样,您无法在一个请求中执行此操作,您需要在开始时使用此访问令牌调用受保护资源,直到它过期为止,获取访问令牌。

您可以在我关于Token Based Authentication in Web API

的详细博文中了解更多相关信息