我正在将 Firebase 与我现有的 Android 应用身份验证集成。根据 Firebase documentation ,需要遵循以下步骤来实现身份验证
- 在安全服务器上生成安全 token
- 验证客户端
我对生成安全 token 感到困惑,我需要在安全服务器上生成它吗?这是什么意思?我正在考虑在 android 客户端本身中生成 token 。
让我解释一下我现有的身份验证机制,在获取凭据作为输入后,它将检查通过 Retrofit
与 MongoLab API
连接的 MongoDB
在此之后,我正在考虑通过以下方式与 Firebase 集成
- 我将从成功登录后获得的登录用户 UID 和 android 客户端本身生成一个安全 token (JWT)。
- 使用生成的
JWT
,我将再次对客户端进行身份验证(第二次使用 firebase,就像最初使用我现有的身份验证机制一样)
生成安全 token (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 自定义身份验证。有没有更好的方法来实现上述过程?
最佳答案
自定义 token 必须在后端服务器上生成。在客户端生成它会暴露您的项目凭据,从而危及您的整个用户。任何可以安装您的应用的攻击者都将能够找出您的服务帐户凭据并拥有对您的用户的完全访问权限。
关于android - 使用 Firebase 自定义身份验证并生成 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47631876/