刷新IdentityToken的正确方法是什么。我们正在使用隐式流程。
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = ConfigurationManager.AppSettings["IdSrv.ClientId"],
Authority = ConfigurationManager.AppSettings["IdSrv.Authority"],
AuthenticationType = "MySTS",
ResponseType = "id_token token", //Implicit Flow
Scope = "openid name email",
RedirectUri = ConfigurationManager.AppSettings["IdSrv.RedirectUri"],
PostLogoutRedirectUri = ConfigurationManager.AppSettings["IdSrv.PostLogoutRedirectUri"],
SignInAsAuthenticationType = "OAuth Bearer",
});
IdentityTokenLifetime默认为300(= 5分钟)。当该时间到期时,不再对用户进行身份验证。我们应该返回状态401(并传递prompt=none
),那么中间件会重定向到IdentityServer3并再次返回吗?还有另一种方式吗?
答案 0 :(得分:0)
理论上:
答案 1 :(得分:0)
默认情况下,ASP.NET OIDC OWIN中间件使用身份令牌生存期作为您的应用将发布的cookie的生命周期。这似乎是WS-Federation OWIN中间件的遗留问题,其中传入令牌的寿命更长。由于身份令牌是短暂的,通常只使用一次然后丢弃,因此这种行为对OpenID Connect并不起作用。
所以你有两个选择:
IdentityTokenLifetime
实体上的Client
属性。)您可以将UseTokenLifetime
设置为false:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions {
// rest of your settings
UseTokenLifetime = false
}