我正在创建一个自定义用户管理系统,涉及所有要在应用程序服务器上存储的应用程序数据,但是电话应该由firebase进行身份验证。当新用户在系统上注册时,将执行Firebase电话身份验证。从Firebase成功进行身份验证后,注册数据会通过API转到服务器。现在的问题是,如何检查服务器端电话号码是否已通过Firebase认证?如果我允许在没有服务器端Firebase身份验证的情况下进行注册,则有人可能会欺骗API请求。我目前正在使用var selectedOptions = $("#select").val();
console.log(selectedOptions);
function onSelectChange(){
var selectedOptions = $("#select").val();
console.log(selectedOptions);
}
var setValue = ["apples","mango"];
function setOptions(){
$("#select option").prop("selected", false);
for(var i=0;i<setValue.length;i++){
$("#select option[value='" + setValue[i] + "']").prop("selected", true);
}
}
Firebase SDK for PHP。
我现在使用的流程在下面中进行了展示,我想要实现的流程也可以给出为:
答案 0 :(得分:1)
当用户首次成功使用其电话号码进行身份验证时,该电话号码将存储在Firebase Auth User列表中的用户记录中,并且可以视为已验证。
一旦电话号码与您的Auth数据库中的用户相关联,您就可以确定
您不应假定此电话号码现在已“验证”。如Firebase官方文档页面所述:
安全问题
仅使用电话号码进行身份验证虽然方便,但操作却较少 比其他可用方法更安全,因为拥有电话 号码可以在用户之间轻松转移。另外,在具有 多个用户个人资料,任何可以接收SMS消息的用户都可以 使用设备的电话号码登录帐户。
如果您在应用中使用基于电话号码的登录功能,则应提供该功能 以及更安全的登录方法,并告知用户 使用电话号码登录进行安全性权衡。
来源:https://firebase.google.com/docs/auth/web/phone-auth#security-concerns
PS:向用户添加电话号码的唯一其他方法是通过Admin SDK,在这里,您有责任确保电话号码属于用户。
PSS:据我了解(并检查),Firebase REST API不会公开“已验证的电话号码”信息。
答案 1 :(得分:1)
Firebase Rest API具有method for that。
在设备上,在对用户进行身份验证并拥有User对象之后,要获取用于验证的令牌,可以调用
getIdToken()
getIDToken()
-getIDTokenWithCompletion:
getIdToken()
getIdToken()
然后,使用该临时ID令牌,可以将a POST request发送到https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=[API_KEY](API_KEY
是Firebase项目的“ Web API密钥”)以获取用户信息,将包含令牌所有者的phoneNumber
。
因此,您可以在服务器端验证令牌的所有者具有该特定的电话号码。