标头上的 WebAPI 令牌 - 如何设置 30 分钟过期时间

本文关键字:设置 分钟 时间 过期 何设置 WebAPI 令牌 | 更新日期: 2023-09-27 18:36:28

假设我有一个 WebAPI,它在登录调用的标头上返回安全令牌(GUID)。

理想情况下,我们希望在 30 分钟内收到更多呼叫,每次收到呼叫时,我们都需要更改令牌以再获得 30 分钟。

约束:我无法使用会话。

WebAPI 环境中的特定标头值上设置过期的正确方法是什么?

标头上的 WebAPI 令牌 - 如何设置 30 分钟过期时间

可以将令牌更改为结构化数据,而不是发送 GUID。例如:智威汤逊

生成令牌的一般步骤如下:

  1. 创建结构化数据包括 {id: GUID, exp: time}
  2. 将其序列化为字符串 (JSON.net)
  3. 加密
  4. 数据(机器密钥/Dpapi加密)
  5. 对数据进行编码 (Base64)

接收令牌的步骤与上述步骤相反。

获取服务器代码的过期时间后,可以确定是否需要刷新令牌。上面的过程实际上是 cookie 身份验证在 ASP.NET 中执行的操作。

对于基于令牌标头的身份验证,最好遵循 OAuth 2.0 规范,使用刷新令牌来延长令牌过期时间。

顺便说一句,Owin OAuth中间件已经支持oauth持有者令牌。我有一个关于它在 SPA 模板中如何工作的博客。您可以考虑使用它而不是自己发明。谢谢。

[更新]我刚刚上传了另一个示例项目,该项目简化了持有者令牌身份验证,而无需遵循 OAuth 2.0 流程。

我认为您没有选择正确的解决方案/方法。在适当的时间刷新令牌是一项消费者工作(一旦令牌过期)我建议构建一个单独的 STS 服务,向消费者颁发令牌,然后将此令牌发送到 Web API Web 服务(在标头中)。Web API 服务验证令牌是否已使用正确的密钥签名,如果是这种情况,则允许获取数据。