我正在尝试根据用户的Google“托管域”授权我的用户。这等效于他们的G Suite组织,是对Google OpenID声明为“ hd”的声明。
我之所以认为自定义声明是放置此信息的好地方,这样我就可以在Firestore中request.auth.token.hd == 'xyz.org'
。
我还想验证用户登录我的应用程序时,他们仍然是组织的一部分。
如何在Firebase中创建此解决方案?
我应该使用signInAndRetrieveDataWithCredential
吗? providerData
是静态的还是每次调用signInAndRetrieveDataWithCredential
时都会更新?
答案 0 :(得分:1)
https://stackoverflow.com/a/44274930/381285
我认为我需要result.additionalUserInfo.profile
才能获得我的索赔信息。它不会在result.user.providerData
上,因为它是UserInfo
数据的数组。
现在,我认为最棘手的部分是在数据库/自定义声明中以安全的方式进行更新。
可能应该绑定到onIdTokenChanged
,后者会触发一个云函数,以验证googleUser.getAuthResponse().id_token
包含我的主张。然后使用该信息更新我的Firebase ID令牌声明。更新自定义声明后,我将再次需要刷新客户的ID令牌,因为自定义声明不会自动传播。