我的openiddict配置为
services.AddOpenIddict(options =>
{
options.AddEntityFrameworkCoreStores<TestDbContext>();
options.AddMvcBinders();
options.EnableAuthorizationEndpoint("/connect/authorize")
.EnableLogoutEndpoint("/connect/logout")
.EnableIntrospectionEndpoint("/connect/introspect")
.EnableUserinfoEndpoint("/api/userinfo");
options.AllowImplicitFlow();
options.RequireClientIdentification();
options.EnableRequestCaching();
options.DisableSlidingExpiration();
options.AddSigningCertificate(
assembly: typeof(Startup).GetTypeInfo().Assembly,
resource: "Server.test.pfx",
password: "test"); // embedded resource
options.SetAccessTokenLifetime(TimeSpan.FromDays(1));
options.SetIdentityTokenLifetime(TimeSpan.FromDays(1));
});
当我在本地测试时,令牌看起来像上面指定的一样长,但在生产(Windows服务器2016 IIS 10)时,它过早地过期(大约1小时)。 netcore1和netcore2都是这种情况。 我知道我可以选择进行静默令牌续订,但是现在想避免这个过程。这种行为是否有任何已知原因?
答案 0 :(得分:1)
当我在本地测试时,令牌看起来像上面指定的一样长,但在生产(Windows Server 2016 IIS 10)时,它会过早地过期(大约1小时)。
默认情况下,OpenIddict使用ASP.NET核心数据保护来加密其访问令牌。
要使Data Protection堆栈正常工作,您必须在进行生产时对其进行配置。有关详细信息,请参阅OpenIddict: 401 errors when two or more service instance count。