繁体   English   中英

.NET Core Identity - 无法使用包含特殊字符的用户名进行身份验证

[英].NET Core Identity - Unable to authenticate with username containing special characters

我们有一个 .NET Core 3.1 应用程序,使用 ASP.NET Core Identity 和 IdentityServer4。 我们需要启用在电子邮件中使用特殊字符创建新用户,例如:sömêthìng@example.com

所以,我们在Startup.cs中设置这个选项(我现在忽略所有其他属性)

services.Configure<IdentityOptions>(options =>
                                            {
                                                options.User.AllowedUserNameCharacters = null;
                                            });

它奏效了,可以创建新用户。

但是,我无法在应用程序中进行身份验证。

调用 IS4 /connect/userinfo成功,返回结果:

在此处输入图像描述

下一个调用是对端点users/getinfo的调用,但它会抛出一个502 - Bad Gateway并且仅当用户名/电子邮件具有特殊字符时才会发生(值得一提的是该应用程序不是新的并且身份验证流程一直运行良好到目前为止)。

端点没有被断点击中,我可以检测到任何可能导致这种情况的中间件。

但是,我在 Chrome 的RequestHeaders > Cookie中注意到:

在此处输入图像描述

用户名似乎已编码,我不知道。 而且我也不知道这是否是身份验证的问题,但似乎是。

我还尝试通过 Postman 调用端点,问题是一样的。 我认为也许令牌可能以某种方式被错误编码,但事实并非如此,没关系。 啊,我们使用 Angular 12 作为前端。

有没有人已经遇到过这样的事情?

实际上问题是不记名令牌中的 email(带有特殊字符)。 因此,在创建令牌之前,我将 email 转换为 base64 并在某处解码。 但是,身份验证本身有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM