【问题标题】:Asp net core IdentityServer4 GetValidTwoFactorProvidersAsync returns nullAsp net core IdentityServer4 GetValidTwoFactorProvidersAsync 返回 null
【发布时间】:2022-02-02 01:23:30
【问题描述】:

我正在构建一个身份服务器,但我无法让双因素身份验证工作。我有一个可以运行的演示项目,但据我所知,某处有一个“神奇的发生”时刻。用户登录正常,然后点击以下代码:

                //logged in ok, check for mfa
                if (user.TwoFactorEnabled)
                {
                    
                    //make sure it has sms as an option 
                    var providers = await _userManager.GetValidTwoFactorProvidersAsync(user);

                    if (!providers.Contains("Phone"))

但获取有效的两个因素提供程序返回 null。我有一个网站,它返回“电话”和“电子邮件”,但我不知道它们是在哪里专门设置的。在我的 Startup.cs 页面中,我添加了这样的短信发件人:

services.AddTransient<ISmsSender, SmsSender>();

在 asp.net 身份(不是核心)中,我可以像这样专门设置它们:

usermanager.RegisterTwoFactorProvider("SMS", new PhoneNumberTokenProvider<IdentityUser> {MessageFormat = "Code: {0}"});

我已经测试了我的 Twilio SMS 类,它可以正常发送文本。但是我该如何注册呢?任何想法将不胜感激。

【问题讨论】:

    标签: .net-core identityserver4 two-factor-authentication


    【解决方案1】:

    我在使用AddIdentityCore&lt;TUser&gt; 获得轻量级时遇到了这个问题 身份注册(无默认 UI)。对生成的 IIdentityBuilder 调用 AddDefaultTokenProviders() 会填充集合。

    builder.Services.AddIdentityCore<MyUserType>().AddDefaultTokenProviders();
    

    【讨论】:

      猜你喜欢
      • 2020-09-27
      • 2021-06-22
      • 2022-11-15
      • 2017-08-21
      • 2019-01-17
      • 2020-01-02
      • 1970-01-01
      • 2022-07-13
      • 2023-03-24
      相关资源
      最近更新 更多