asp.net 身份在 20 分钟后过期不记名令牌

asp.net identity expire bearer token after 20 min

我有一个网络服务,用户可以登录服务并提供不记名令牌。

在本地一切正常,但在服务器(共享主机,windows 2012,iis 8.5)20 分钟后,令牌已过期!!!

我的 AccessTokenExpireTimeSpan 是:

AccessTokenExpireTimeSpan = TimeSpan.FromDays(900),

同样在我的第一个请求中,我延迟了大约 5 秒。有什么问题?

我假设您在生产环境中有多个服务器。 ASP.NET Identity 使用服务器的机器密钥来生成令牌持有者。因此,20 分钟后,您已经 "redirected" 使用另一台机器密钥连接到另一台服务器。

一种解决方案是覆盖服务器的机器密钥。在 web.config 中设置机器密钥。所以所有服务器都有相同的机器密钥。

<machineKey validationKey="534766AC57A2A2F6A71E6F0757A6DFF55526F7D30A467A5CDE102D0B50E0B58D613C12E27E7E778D137058E" decryptionKey="7059303602C4B0B3459A20F9CB631" decryption="Auto" validation="SHA1"/>


如何生成和设置机器密钥:
https://technet.microsoft.com/sv-se/library/cc755177%28v=ws.10%29.aspx http://docs.orchardproject.net/Documentation/Setting-up-a-machine-key

解决方案 2 - 如果无法访问 IIS

如果您不想修改 IIS 上的 machineKey 或无权访问它,您可以通过验证 [中的默认设置轻松验证 ASP.NET 身份令牌提供程序=36=] 文件。

您可以在这里找到一个例子:https://github.com/eashi/Samples/blob/master/OAuthSample/OAuthSample/App_Start/Startup.Auth.cs