我已经构建了一个基于IdentityServer4的授权服务器 . 有用 . 但是当我尝试使用反向通道刷新令牌时,请求在HttpContext上调用AuthenticateAsync()方法时失败 . 基本上,在HttpContext上调用AuthenticateAsync()或SignInAsync()会失败 . 更糟糕的是,即使我在try ... catch块中包装调用,也不会抛出任何异常 .
我已经尝试将IHttpContextAccessor注入Scoped或Singleton但结果相同 . 我首先补充一点,授权服务器返回更新的令牌,但它正在使用客户端应用程序中的新令牌更新cookie,而该过程将停止 . 我怀疑问题与上下文有关,但我似乎无法指出确切的问题 .
以下是代码段
var accessToken = string.Empty;
var currentContext = _context.HttpContext;
// this line works perfectly
var refreshToken = await
currentContext.GetTokenAsync(OpenIdConnectParameterNames.RefreshToken);
// the auth service returns the tokens in the stringified data object
var tokens = JsonConvert.DeserializeObject<List<AuthenticationToken>>(data);
if (tokens.Any())
{
// this is the line that fails
var currentAuthenticateResult = await
currentContext.AuthenticateAsync("Cookies");
currentAuthenticateResult.Properties.StoreTokens(tokens);
// even this fails
await currentContext.SignInAsync("Cookies",
currentAuthenticateResult.Principal,
currentAuthenticateResult.Properties);
}
客户端应用程序是用.NET Core 2.1编写的
我需要帮助 .