我正在将Firebase与我在Android应用中的现有身份验证集成。根据{{3}},需要遵循以下步骤来实现身份验证
我对生成安全令牌很困惑,我是否需要在安全的服务器上生成它?这是什么意思?我正在考虑在Android客户端本身生成令牌。
让我解释一下我现有的身份验证机制,在获取凭据作为输入后,它会检查与MongoDB
通过MongoLab API
Retrofit
在此之后,我正在考虑以下面的方式与Firebase集成
JWT
,我将再次验证客户端(第二次使用firebase,最初使用我现有的身份验证机制)生成安全令牌(JWT)
Map<String, Object> payload = new HashMap<String, Object>();
payload.put("uid", "uniqueId1");
payload.put("some", "arbitrary");
payload.put("data", "here");
TokenGenerator tokenGenerator = new TokenGenerator("<YOUR_FIREBASE_SECRET>");
String token = tokenGenerator.createToken(payload);
对客户进行身份验证
Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/");
ref.authWithCustomToken(token, new Firebase.AuthResultHandler() {
@Override
public void onAuthenticationError(FirebaseError error) {
System.err.println("Login Failed! " + error.getMessage());
}
@Override
public void onAuthenticated(AuthData authData) {
System.out.println("Login Succeeded!");
}
});
这里看起来像往返一次,比如使用我现有的身份验证验证用户2次,再次使用Firebase自定义身份验证。有没有更好的方法来实现上述过程?
答案 0 :(得分:0)
必须在后端服务器上生成自定义令牌。在客户端生成它将暴露您的项目凭据,从而危及整个用户。任何可以安装您的应用的攻击者都可以找出您的服务帐户凭据并拥有对您用户的完全访问权限。