我正在用Firebase构建一个没有服务器的应用程序: Firestore和云功能。我一直在纠结的一件事是,如何验证用户是否启用了2FA以允许访问某些功能。已经注册到谷歌身份平台,允许2FA,不幸的是,我无法找到一个选项,以强制2FA。
我的安全规则要求是:登录、电子邮件验证、使用2FA进行身份验证。
云防火墙中当前的安全规则:
request.auth != null && request.auth.token.email_verified就我搜索的情况而言,可以检查request.auth.token.phone_number,但这只检查用户是否注册了电话号码,而不是他们是否有2FA登录?
发布于 2021-02-07 12:11:09
在把这个问题交给谷歌小组支持后,我找到了答案:
if request.auth.token.firebase.get('sign_in_second_factor', null) == 'phone'
&& 'second_factor_identifier' in request.auth.token.firebase;这将允许访问,如果用户有移动电话作为2FA。
您可以在google组:jk/m/4e0FRCpWAgAJ上查看Sam的原稿。
发布于 2021-01-18 15:17:55
谷歌去年在谷歌云识别平台项目中增加了多因素认证支持。例如,要对用户进行身份验证,可以构造代码以包括以下步骤:
如果您对阅读更多内容感兴趣,可以在Firebase 文档页面上找到下面的代码片段。
var recaptchaVerifier = new firebase.auth.RecaptchaVerifier(container);
user.multiFactor.getSession().then(function(multiFactorSession) {
// Specify the phone number and pass the MFA session.
var phoneInfoOptions = {
phoneNumber: phoneNumber,
session: multiFactorSession
};
var phoneAuthProvider = new firebase.auth.PhoneAuthProvider();
// Send SMS verification code.
return phoneAuthProvider.verifyPhoneNumber(
phoneInfoOptions, recaptchaVerifier);
})
.then(function(verificationId) {
// Ask user for the verification code.
var cred = firebase.auth.PhoneAuthProvider.credential(verificationId, verificationCode);
var multiFactorAssertion = firebase.auth.PhoneMultiFactorGenerator.assertion(cred);
// Complete enrollment.
return user.multiFactor.enroll(multiFactorAssertion, mfaDisplayName);
});https://stackoverflow.com/questions/65746288
复制相似问题