我已经为客户构建了一个基于Identity Server 4的解决方案,并且几乎所有功能都很好:)但是,我有一个不一致的问题;这就是问题。有时会起作用,有时会失败。这是当用户登录后,访问设置页面,然后尝试将外部登录名(例如Facebook或Google)链接到该帐户。
将调用控制器,并执行以下代码而不会出现任何问题:
public async Task<IActionResult> LinkLogin(string provider, string cancelUrl = null)
{
// Clear the existing external cookie to ensure a clean login process
await this.HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);
// Request a redirect to the external login provider to link a login for the current user
var redirectUrl = this.Url.Action(nameof(this.LinkLoginCallback));
var properties = this.signInManager.ConfigureExternalAuthenticationProperties(
provider,
redirectUrl,
this.userManager.GetUserId(this.User));
return new ChallengeResult(provider, properties);
}
但是回调并不总是被调用,当回调失败时,我在日志中得到以下错误:
Identity.Application未通过身份验证。失败消息:取消保护票证失败
答案 0 :(得分:0)
您在玩一台服务器吗?如果是这样,他们必须使用相同的数据保护密钥,因此必须具有共享的数据保护存储。