Как определить, включен ли сторонний логин 2fa

У меня есть приложение Identity server 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. Затем они входят в систему с помощью Google, должны предоставить двухфакторный код, а затем они возвращаются в нашу систему, где им снова нужно предоставить двухфакторный код для нашей системы.

Есть ли способ определить, что пользователь включил два фактора в своей учетной записи Google? Как только я узнаю, что это было включено, я могу перестать спрашивать у них двухфакторный код в нашей системе. Я посмотрел везде, и эта информация, похоже, не возвращается ко мне. Не похоже, чтобы какой-либо API Google давал мне знать, включен ли он в их учетной записи.


person DaImTo    schedule 12.07.2018    source источник
comment
Это точный ответ, который я искал. Теперь я могу передать это руководству. Теперь я должен удалить это или оставить, поскольку он, вероятно, задавался вопросом немного лучше, чем исходный вопрос.   -  person DaImTo    schedule 12.07.2018
comment
Оставить это — хорошая идея, так как люди могут найти это через Google вместо другого, и теперь у них есть ссылка, по которой нужно перейти, чтобы получить ответ. Закрытые дубликаты — хорошие указатели.   -  person ivarni    schedule 12.07.2018
comment
Я отправил электронное письмо автору другого ответа, я случайно его знаю. с моим вариантом использования я обновлю, если услышу что-нибудь интересное от Google   -  person DaImTo    schedule 12.07.2018