假设我有一个WebAPI,它在Login调用的Header上返回一个安全令牌(GUID)。
理想情况下,我们希望在30分钟内接听更多电话,每次收到电话时,我们都需要更改令牌以再获得30分钟。
约束: 我不能使用Session。
在WebAPI环境中为特定Header值设置过期的正确方法是什么?
答案 0 :(得分:2)
您可以将令牌更改为结构化数据,而不是发送GUID。例如:JWT
生成令牌的一般步骤是:
接收令牌的步骤恰好与上述步骤相反。
在服务器代码上获得到期时间后,您可以确定是否需要刷新令牌。上面的过程实际上是cookie验证在ASP.NET中的作用。
对于基于令牌头的身份验证,最好遵循OAuth 2.0规范以使用刷新令牌来延长令牌过期时间。
BTW,Owin OAuth middleware已经支持oauth bearer token。我有一个关于它如何在SPA模板中工作的blog。您可以考虑使用它而不是发明自己的。感谢。
[更新] 我刚刚上传了another sample project,它简化了不记名代币身份验证,而没有遵循OAuth 2.0流程。
答案 1 :(得分:1)
我不认为您选择了正确的解决方案/方法。 在适当的时间刷新令牌是一项消费者工作(一旦令牌过期) 我建议构建一个单独的STS服务,向消费者发放令牌,然后将此令牌发送到Web API Web服务(在标头中)。 Web API服务验证令牌是否使用正确的密钥进行签名,如果是这种情况,则允许获取数据。