2

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

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

我的 AccessTokenExpireTimeSpan 是:

AccessTokenExpireTimeSpan = TimeSpan.FromDays(900),

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

4

1 回答 1

2

我假设您在生产中有多个服务器。并且 ASP.NET Identity 使用服务器的机器密钥来生成令牌持有者。因此,在 20 分钟后,您已被“重定向”到使用另一台机器密钥的另一台服务器。

一种解决方案是覆盖服务器的机器密钥。在 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 或无权访问它,您可以通过覆盖startup.cs文件中的默认设置来轻松覆盖 ASP.NET 身份令牌提供程序。

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

于 2015-03-20T10:02:58.857 回答