使用Web API进行身份验证

问题描述:

我正在使用ASP.NET WebAPI构建我正在构建的Web服务。他的网络服务将使用身份识别服务对用户进行身份验证。使用Web API进行身份验证

我对于如何从外部验证用户有点困惑。我们目前的系统是非常基础的 - 我们在XML请求中发送一个用户名和密码作为一个单独的字段,并且全部在1个请求中完成。

从我在Google上看到的情况看,最好的方法是从阿里请求一个令牌,然后在随后的请求中传递该令牌。有没有一种方法可以在1个请求中完成所有操作(也就是说,在API请求中发送数据以及用户名/密码或API请求)?

从从Google上看,我可以看到,最好的方法是向Ali请求 令牌,然后在随后的请求中传递此令牌。 有没有办法在那里我可以做到这一切在1个请求(即,发送到 的API我对数据要求以及用户名/密码或 也许在单个请求API密钥?)

我不确定为什么你的Web服务想知道基于Token的认证中用户的用户名和密码。

在基于令牌的身份验证中,您的Web服务不应该要求用户的用户名和密码。

取而代之的是,用户首先使用验证您的服务信任的令牌发行者验证用户名和密码

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

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

随着每个请求继续发送用户名/密码并不安全,您需要配置您的api以在指定的生命周期(即24小时)发出访问令牌。要做到这一点,你需要创建和终点(/令牌)接受用户名/密码验证组合,然后发出访问令牌。 接收此访问令牌的客户端负责安全地存储,并使用承载方案使用请求“授权”头对每个请求传输给任何受保护资源。

同样,你不能在一个请求中这样做,你需要在开始时使用此访问令牌持续调用受保护资源,直到它过期为止。

你可以在我的详细博客文章中阅读更多关于Token Based Authentication in Web API