【问题标题】:How to handle invalid bearer tokens如何处理无效的不记名令牌
【发布时间】:2014-11-05 22:08:33
【问题描述】:

我有一个ASP.NET MVC 网站和一个Web API 2 项目。

我使用存储在身份声明中的不记名令牌来识别 API 上的用户。

它有效,但我注意到当我为 API 使用不同的服务器时,所有令牌都无效。

当令牌无效时(​​因为它是不同的服务器或因为它已过期),我对该怎么做感到困惑。

我们应该如何处理?

对于过期的令牌,我想我可以存储过期日期并要求一个新的令牌或实现OAuth2 Refresh Tokens。但是对于另一种情况,我不知道该怎么办。

谢谢

【问题讨论】:

  • machinekey 用于加密/解密,因此如果服务器之间不同,则在解密令牌时将不匹配。因此,只需确保两台服务器中的 machinekey 值相同即可。
  • 谢谢,我就是这么想的。那么换服务器应该怎么做呢?
  • 如果我使用 Azure 或任何云托管,机器密钥会经常变化吗?
  • 如果您使用相同的云服务,则机器密钥会在不同实例之间同步。所以 Azure 上没有与此相关的问题。我不确切知道 Azure 上的机器密钥何时会更改,但如果您保持相同的部署而不拆除整个服务,它应该保持不变。
  • @Horizo​​n_Net 谢谢你的澄清

标签: asp.net-mvc asp.net-web-api2 bearer-token


【解决方案1】:

如果您为 API 使用不同的服务器,则必须确保 所有 WebConfig 文件都具有相同的 machineKey 标签。如果是 Windows Azure,您可以更改部署的 web.config 文件。

<system.web>
...
<machineKey validationKey="57B449BBA8F9E656087FF7848727E122C5F5966F65AC0FC25FB3532193B59CFCD13B370883FFC184C1F1500638F33E6F67B37CAED1D9BC65BBC6CFFB232BFD0B" decryptionKey="6D9FBE88D16B3FA5B5E6B37460BBE50DA85D5B4C482159006B5A337C58AA9E79" validation="SHA1" decryption="AES" />
...
</system.web>

使用这个machine Key Generator。 Token 是根据 machineKey 创建的,所以你必须确保这个字段是相同的。否则,在一个项目上创建的令牌对另一个项目无效。

【讨论】:

  • 谢谢。这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 2014-09-04
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
相关资源
最近更新 更多