【发布时间】:2018-09-25 21:18:32
【问题描述】:
我有一个 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);
问题:
我的问题是在访问令牌过期一小时后出现的。似乎它不会自动刷新。我想知道这是否是我的身份验证中的一个设置,会导致它刷新它。但是我一直无法找出我应该如何强制它在访问令牌过期后刷新它。
我目前的解决方案是自己刷新它,但我原以为这会内置到 cookie 中间件中。
【问题讨论】:
-
如何使用 OpenId Connect 的刷新令牌处理 asp.net 核心中过期的访问令牌:stackoverflow.com/questions/40032851/…
-
@HoussemRomdhani 不错的尝试,但那是我的旧应用程序使用的 .net core 2.0,所以 1.1x 不再起作用
-
哇,这看起来很有用,谢谢。我会尽快回复您。无论如何,您都可能希望将其添加为答案。
-
.net 核心是否没有改进来自动管理这个?
标签: c# asp.net-core oauth .net-core identityserver4