首页 > 解决方案 > 如何检测第三方登录是否已启用 2fa

问题描述

我有一个身份服务器 4 应用程序。这允许我们的客户使用我们的登录名以及 Google 和 Facebook 第三方登录名(facebook 和 google)登录。我们还有 2fa(两因素)登录能力。

services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = IdentityConstants.ApplicationScheme;
            options.DefaultChallengeScheme = IdentityConstants.ApplicationScheme;
        }).AddGoogle("Google", options =>
            {
                options.AccessType = "offline";
                options.SignInScheme = IdentityConstants.ExternalScheme;
                options.ClientId = Configuration.GetSection("Settings:GoogleClientId").Value;
                options.ClientSecret = Configuration.GetSection("Settings:GoogleClientSecret").Value;
            })
            .AddFacebook("Facebook", facebookOptions =>
            {
                facebookOptions.SignInScheme = IdentityConstants.ExternalScheme;
                facebookOptions.AppId = Configuration.GetSection("Settings:FacebookAppId").Value;
                facebookOptions.AppSecret = Configuration.GetSection("Settings:FacebookAppSecret").Value;
            });

所有这些都有效。但是我有高层管理人员的要求。

作为支持者的用户(系统中有一个标志)必须启用两个因素。这很简单,我只是要求他们不能在我们的系统中禁用这两个因素。

然而,我们很快就发现了这个问题。如果用户在他们的谷歌帐户上启用了两个因素。然后他们使用谷歌登录必须提供两个因素代码,然后他们回到我们的系统,在那里他们再次必须为我们的系统提供两个因素代码。

有没有办法检测用户在他们的谷歌帐户上启用了两个因素?一旦我知道它在那里启用,我就可以停止向他们询问我们系统上的两个因素代码。我到处寻找,但似乎没有将这些信息返回给我。似乎也没有任何 google api 可以让我知道是否在他们的帐户上启用了它。

标签: c#authenticationasp.net-coreidentityserver4two-factor-authentication

解决方案


推荐阅读