0

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

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

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

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

我们应该如何处理?

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

谢谢

4

1 回答 1

1

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

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

使用本机密钥生成器。Token 是根据 machineKey 创建的,所以你必须确保这个字段是相同的。否则,在一个项目上创建的令牌对另一个项目无效。

于 2014-09-12T09:44:22.943 回答