首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于2FA的修复安全规则

用于2FA的修复安全规则
EN

Stack Overflow用户
提问于 2021-01-16 03:45:03
回答 2查看 965关注 0票数 3

我正在用Firebase构建一个没有服务器的应用程序: Firestore和云功能。我一直在纠结的一件事是,如何验证用户是否启用了2FA以允许访问某些功能。已经注册到谷歌身份平台,允许2FA,不幸的是,我无法找到一个选项,以强制2FA。

我的安全规则要求是:登录、电子邮件验证、使用2FA进行身份验证。

云防火墙中当前的安全规则:

代码语言:javascript
复制
request.auth != null && request.auth.token.email_verified

就我搜索的情况而言,可以检查request.auth.token.phone_number,但这只检查用户是否注册了电话号码,而不是他们是否有2FA登录?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-07 12:11:09

在把这个问题交给谷歌小组支持后,我找到了答案:

代码语言:javascript
复制
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的原稿。

票数 3
EN

Stack Overflow用户

发布于 2021-01-18 15:17:55

谷歌去年在谷歌云识别平台项目中增加了多因素认证支持。例如,要对用户进行身份验证,可以构造代码以包括以下步骤:

  1. 重新认证,用户;
  2. 让用户输入他们的电话号码;
  3. 初始化: reCAPTCHA验证器;
  4. 为用户获取一个多因素会话;
  5. 初始化:具有用户电话号码和多因素会话的PhoneInfoOptions对象;
  6. 向用户的电话发送验证信息;
  7. 如果请求失败,重置reCAPTCHA;
  8. 要求用户验证短信代码;
  9. 初始化:一个MultiFactorAssertion对象;
  10. 完成招生;

如果您对阅读更多内容感兴趣,可以在Firebase 文档页面上找到下面的代码片段。

代码语言:javascript
复制
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);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65746288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档