2 votes

Authentification personnalisée avec Firebase et génération de JWT

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

  1. Génération d'un jeton sécurisé sur un serveur sécurisé
  2. 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

  1. À 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).
  2. 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 ?

enter image description here

0voto

bojeil Points 11569

Le jeton personnalisé doit être généré sur un serveur dorsal. Le générer du côté client exposera les informations d'identification de votre projet, compromettant ainsi tous vos utilisateurs. Tout attaquant qui peut installer votre application sera en mesure de découvrir les informations d'identification de votre compte de service et d'avoir un accès complet à vos utilisateurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X