Je suis en train d'intégrer Firebase avec mon authentification existante dans l'application Android. D'après Documentation sur Firebase Pour obtenir l'authentification, il faut suivre les étapes suivantes
- Génération d'un jeton sécurisé sur un serveur sécurisé
- Authentification des clients
Je ne sais pas comment générer un jeton sécurisé, Dois-je le générer sur un serveur sécurisé ? Qu'est-ce que ça veut dire ? Je pense générer le jeton dans le client Android lui-même.
Permettez-moi d'expliquer mon mécanisme d'authentification existant. Après avoir reçu les informations d'identification en entrée, il vérifie les éléments suivants MongoDB
qui est relié à MongoLab API
par le biais de Retrofit
Après cela, je pense intégrer avec Firebase de la manière suivante
- À partir de l'UID de l'utilisateur que je reçois après une connexion réussie et dans le client Android lui-même, je vais générer un jeton sécurisé (JWT).
- Avec la génération
JWT
Je vais à nouveau authentifier un client (la deuxième fois avec firebase, comme initialement avec mon mécanisme d'authentification existant).
Générer un jeton sécurisé (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);
Authentification des clients
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!");
}
});
Ici, cela ressemble à un aller-retour, comme authentifier un utilisateur 2 fois, avec mon authentification existante et à nouveau avec l'authentification personnalisée Firebase. Y a-t-il une meilleure façon de réaliser le processus ci-dessus ?