asp.net身份在20分钟后到期

时间:2015-03-19 11:48:46

标签: asp.net asp.net-identity-2 bearer-token

我有一个Web服务,用户可以登录服务并提供持有者令牌。

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

我的AccessTokenExpireTimeSpan是:

AccessTokenExpireTimeSpan = TimeSpan.FromDays(900),

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

1 个答案:

答案 0 :(得分: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 Identity令牌提供程序。文件。

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