我有一个 Asp.net2.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);
问题:
我的问题发生在访问令牌过期一小时后。看起来它不会自动刷新。我想知道这是否是我的身份验证中的一个设置,会导致它刷新它。但是,我一直无法找出如何强制它在访问令牌过期后刷新它。
我当前的解决方案是自己刷新它,但我本以为这会内置到 cookie 中间件中。
对于自动刷新令牌,添加options.Scope.Add("offline_access");
to AddOpenIdConnect()
选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)