我有一个ASP.NET MVC
网站和一个Web API 2
项目。
我使用存储在身份声明中的不记名令牌来识别 API 上的用户。
它有效,但我注意到当我为 API 使用不同的服务器时,所有令牌都无效。
当令牌无效时(因为它是不同的服务器或因为它已过期),我对该怎么做感到困惑。
我们应该如何处理?
对于过期的令牌,我想我可以存储过期日期并要求一个新的令牌或实施OAuth2 Refresh Tokens。但是对于另一种情况,我不知道该怎么办。
谢谢
我有一个ASP.NET MVC
网站和一个Web API 2
项目。
我使用存储在身份声明中的不记名令牌来识别 API 上的用户。
它有效,但我注意到当我为 API 使用不同的服务器时,所有令牌都无效。
当令牌无效时(因为它是不同的服务器或因为它已过期),我对该怎么做感到困惑。
我们应该如何处理?
对于过期的令牌,我想我可以存储过期日期并要求一个新的令牌或实施OAuth2 Refresh Tokens。但是对于另一种情况,我不知道该怎么办。
谢谢
如果 API 有不同的服务器,则必须确保所有 WebConfig 文件都具有相同的 machineKey 标签。如果是 Windows Azure,您可以更改部署的 web.config 文件。
<system.web>
...
<machineKey validationKey="57B449BBA8F9E656087FF7848727E122C5F5966F65AC0FC25FB3532193B59CFCD13B370883FFC184C1F1500638F33E6F67B37CAED1D9BC65BBC6CFFB232BFD0B" decryptionKey="6D9FBE88D16B3FA5B5E6B37460BBE50DA85D5B4C482159006B5A337C58AA9E79" validation="SHA1" decryption="AES" />
...
</system.web>
使用本机密钥生成器。Token 是根据 machineKey 创建的,所以你必须确保这个字段是相同的。否则,在一个项目上创建的令牌对另一个项目无效。