具有域限制的Ionic和Firebase身份验证安全性

时间:2018-01-02 14:07:21

标签: security firebase authentication ionic-framework firebase-authentication

我正在使用Ionic和Firebase身份验证(Google登录方法)来验证用户身份。我的身份验证工作正常。问题是我想只允许访问我的应用程序(登录---而不是身份验证),如果用户来自我公司的域(jimmy @ neutron.ca )。

我只希望我的员工登录应用程序并获得登录页面之外的界面访问权限。我只希望我的员工能够提交他们的工作时间(这是登录后申请的范围)。

我的问题是,对用户进行身份验证并将其登录的安全方法是什么?

在我们从firebase google登录方法获取身份验证对象后,在客户端离子应用程序上计算是否安全,用户是否属于特定域?

login() {
  this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider())
    .then(res => {
      // example email object = 'jimmy@neutron.com'
      // get email object, split('@')[1] on it
      // if result of split (@neutron.com) is eqaul to my domain (neutron.com), which it is, then log user in
        this.navCtrl.setRoot(AuthenticatedPage);
      // if not, unauthenticate and present unauthorized message to user.
    })
}

如果在客户端进行离子操作不安全,那么我们如何计算呢? firebase可以计算吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确的话。您需要将hd自定义OAuth参数传递给Google提供商:

const provider = new firebase.auth.GoogleAuthProvider();
provider.setCustomParameters({hd: 'neutron.ca'});
this.afAuth.auth.signInWithPopup(provider);

然而,由于Google没有强制执行此操作,用户仍然可以绕过这一点(检查电子邮件域)。 您还需要通过安全规则(如果您使用的是Firebase规则)或解析ID令牌并通过Firebase Admin SDK进行验证来强制执行此操作。