如何解决Identityserver4使用两个相同的外部提供程序,第二个外部提供程序登录始终失败
我使用两个具有不同clientid的discord提供程序登录。以下代码:
services.AddAuthentication()
.AddDiscord("ADiscord",u =>
{
u.ClientId = "74627xxx8536";
u.ClientSecret = "B-FLxxxxjp3JOKwr27";
u.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
u.Scope.Add("guilds.join");
u.SaveTokens = true;
u.CorrelationCookie.SameSite = SameSiteMode.Unspecified;
u.CorrelationCookie.IsEssential = true;
})
.AddDiscord("BDiscord",u =>
{
u.ClientId = "71475xxx1925";
u.ClientSecret = "45-xxxA4okXx1I";
u.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
u.Scope.Add("guilds.join");
u.SaveTokens = true;
u.CorrelationCookie.SameSite = SameSiteMode.Unspecified;
u.CorrelationCookie.IsEssential = true;
});
当我使用方案“ ADiscord”登录时,一切正常。但是使用方案“ BDiscord”,则会引发错误“ RemoteAuthentication中的错误:oauth状态丢失或无效”。 更奇怪的是,如果更改顺序,让“ BDiscord”位于顶部,然后使用方案“ BDiscord”登录,一切正常,那么“ ADiscord”将引发错误。
Disord提供者代码位于 https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/tree/dev/src/AspNet.Security.OAuth.Discord
上解决方法
您需要设置CallbackPath,将其设置为/signin-discord
,然后向IdSvr4注册/signin-discord
。该端点用于在重定向到应用程序端点之前完成OAuth握手。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。