我有一个Asp.net 2.0 核心Web应用程序,它连接到Identity Server 4应用程序进行身份验证 . 还涉及API . API使用访问令牌作为承载令牌 .
我的创业:
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = "Cookies";
options.Authority = idsEndPoint;
options.RequireHttpsMetadata = false;
options.ClientId = "testclient";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("testapi");
});
控制器:
在我的控制器中,我可以看到我的令牌,它们都已填充,我可以在API调用中使用访问令牌 .
var accessToken = await HttpContext.GetTokenAsync(OpenIdConnectParameterNames.AccessToken);
var refreshToken = await HttpContext.GetTokenAsync(IdentityConstants.HttpContextHeaders.RefreshToken);
var idToken = await HttpContext.GetTokenAsync(OpenIdConnectParameterNames.IdToken);
Question:
我的问题发生在访问令牌到期一小时后 . 它似乎不会自动刷新 . 我想知道这是否是我的身份验证中的设置,将导致它刷新它 . 但是我一直无法知道如何在访问令牌过期后强制它刷新访问令牌 .
我目前的解决方案是自己刷新它,但我认为这将内置于cookie中间件 .