Asp.net Web api身份验证模式
我正在实现一个RESTAPI来使用新的WebAPI框架。此api将被其他公司使用,因此我们将添加一个身份验证方法 关于身份验证,我想实现一些基于令牌的东西。像这样的Asp.net Web api身份验证模式,asp.net,authentication,asp.net-web-api,Asp.net,Authentication,Asp.net Web Api,我正在实现一个RESTAPI来使用新的WebAPI框架。此api将被其他公司使用,因此我们将添加一个身份验证方法 关于身份验证,我想实现一些基于令牌的东西。像这样的 客户端向登录方法提供凭据 系统对客户端进行身份验证并发送令牌 客户端在以下api调用中使用此令牌 我想知道这个模式对我的场景是否有用。操作将主要是原子操作,基本上客户端将定期ping此api以获取某些特定数据,因此不确定拥有会话令牌是否有意义(在某个时候令牌应该过期,并且不确定如何管理) 您建议如何在此场景中实现身份验证架构?当
- 客户端向登录方法提供凭据
- 系统对客户端进行身份验证并发送令牌
- 客户端在以下api调用中使用此令牌
您建议如何在此场景中实现身份验证架构?当您生成令牌时,我会将其存储在数据库中,并将外键返回到经过身份验证的登录名的主键。我还(使用令牌)存储它建立的日期和时间,以及超时时间(您可以为每个令牌设置此时间,或者将其存储在配置中)。每次用户ping服务时检查令牌/时间,然后在该时间到期后强制他们重新验证(通过对照令牌存储的创建日期进行检查) 这将确保登录信息仅在令牌过期后传输,当生成新令牌时,它将删除旧令牌记录
我理解您的要求了吗?制作这样一个基于令牌的身份验证方案并不容易 对于如何以一种良好且安全的方式实现它,我真的没有答案。但是,我将提供一些关于您必须处理的问题的想法:
- 令牌的生成需要很好的随机化,并且令牌需要“足够长”(对于“足够长”的某些定义),以防止某人仅仅发送一堆不同的令牌来查看他是否“得到了成功”
- 您如何能够可靠地验证代币未被“绑架”
- 您的应用程序将令牌颁发给用户/应用程序/实体X
- 令牌完好无损(尚未更改)
- 您与代币一起存储的任何其他物品(是否过期等)
当然,许多身份验证方案都是这样,因此,根据您的数据的敏感程度以及通过您的服务可以执行的操作类型,这对您来说可能不是一个大问题。使用HMAC身份验证查看一下这一点:使用现有的令牌生成器(如ASP.NET forms身份验证)如何?