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

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

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

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

我的 AccessTokenExpireTimeSpan 是:

AccessTokenExpireTimeSpan = TimeSpan.FromDays(900),

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

最佳答案

我假设您在生产中拥有多个服务器。 ASP.NET Identity 使用服务器的机器 key 来生成 token 承载。因此,20 分钟后,您已被“重定向”到具有另一个机器 key 的另一台服务器。

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

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


如何生成和设置机器 key :
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 身份 token 提供程序文件。

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

关于asp.net 身份不记名 token 在 20 分钟后过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29143794/

相关文章:

c# - Entity Framework 寻找错误的列

c# - 用户 (IPrincipal) 在使用 Web Api 2.1 和 Owin 的 ApiController 构造函数上不可用

asp.net - 如何在不查找 AspNetUserRoles 表的情况下在 Web API 方法中获取用户角色?

http - 为什么在 HTTP 请求的 'Bearer' header 中的 token 之前需要 'Authorization'?

c# - Lambda 表达式中的动态 Where 子句

javascript - 如何在不重新编译的情况下使用 ASP.NET 捆绑和缩小?

asp.net - NLog - 变量更新(在运行时)

c# - 根据用户自定义属性限制用户对页面的访问

java - OAuth2 oltu 客户端

spring-boot - 如何处理 JWT token 过期?