根据Google“托管域”授权用户

时间:2019-04-21 20:33:36

标签: firebase firebase-authentication

我正在尝试根据用户的Google“托管域”授权我的用户。这等效于他们的G Suite组织,是对Google OpenID声明为“ hd”的声明。

我之所以认为自定义声明是放置此信息的好地方,这样我就可以在Firestore中request.auth.token.hd == 'xyz.org'

我还想验证用户登录我的应用程序时,他们仍然是组织的一部分。

如何在Firebase中创建此解决方案?

我应该使用signInAndRetrieveDataWithCredential吗? providerData是静态的还是每次调用signInAndRetrieveDataWithCredential时都会更新?

1 个答案:

答案 0 :(得分:1)

https://stackoverflow.com/a/44274930/381285

我认为我需要result.additionalUserInfo.profile才能获得我的索赔信息。它不会在result.user.providerData上,因为它是UserInfo数据的数组。

现在,我认为最棘手的部分是在数据库/自定义声明中以安全的方式进行更新。

可能应该绑定到onIdTokenChanged,后者会触发一个云函数,以验证googleUser.getAuthResponse().id_token包含我的主张。然后使用该信息更新我的Firebase ID令牌声明。更新自定义声明后,我将再次需要刷新客户的ID令牌,因为自定义声明不会自动传播。