16

J'écris un serveur dorsal pour les applications mobiles. Le backend fonctionne sur google app engine et est écrit en Java.Comment intégrer l'authentification firebase aux points de terminaison google app engine

Je souhaite que les utilisateurs puissent se connecter avec une identité fédérée, telle que Facebook. J'ai vu que google supporte ce type d'authentification pour les applications mobiles via l'authentification Firebase. Quel serait le meilleur moyen d'intégrer l'authentification firebase à mes points de terminaison actuels du moteur d'applications?

J'utilise déjà le magasin de données de la plate-forme de cloud et je ne souhaite pas utiliser la base de données Firebase, mais uniquement la méthode d'authentification.

Merci.

Répondre

6

Je cherche aussi une réponse à cette question. Mon meilleur 5c jusqu'à présent est de

  • Utilisez Firebase pour mettre en place signe dans les méthodes, etc. à partir de la console
  • Utilisez Firebase UI (en version bêta) pour le Web ou « l'intégration du fournisseur d'identité fédérée » pour iOS/Android pour mis en place le flux d'authentification
  • détails jeton/authentification retrive sur votre web/iOS/Android client et le transmettre à votre cloud Endpoints comme par exemple, la requête en-têtes HTTP
  • Injecter le javax.servlet.http.HttpServletRequest à votre point final méthodes (il suffit d'ajouter un argument et Google avec injecter l'objet de requête automatiquement)
  • Créez une méthode que votre point de terminaison appellera pour chaque requête (nécessitant une authentification) qui gérera la validation des informations d'identification transmises en tant que HTTP Request Headers
  • Utilisez FireBase Java SDK pour appeler FireBase afin de valider les informations d'identification (dans l'ordre pour ce faire, vous devez exporter la configuration JSON de la console Firebase) et charger le SDK avec eux, par exemple, dans l'un de vos servlets:

@Override 
    public void init(ServletConfig config) { 
     try{ 
     InputStream in = config.getServletContext().getResourceAsStream("/WEB-INF/firebase-privatekey.json"); 
     FirebaseOptions options = new FirebaseOptions.Builder() 
       .setServiceAccount(in) 
       .setDatabaseUrl("YOUR_DATABASE_URL") 
       .build(); 
     FirebaseApp.initializeApp(options); 
     log.info("Authentication enabled"); 
     } 
     catch(Throwable t) { 
      t.printStackTrace(); 
      log.warning("AUTHENTICATION DISABLED. Only public resources will be available"); 
     } 
    } 
+0

J'ai créé une nouvelle question avec une question similaire ... http://stackoverflow.com/questions/39124587/integrate-firebase-auth-with-google-app-engine-cloud-endpoints – SmilingM

0

vous devriez pouvoir utiliser Google Cloud Endpoints comme proxy d'authentification devant votre ap p. Endpoints supports validating Firebase Authentication tokens en configurant votre modèle OpenAPI:

# Configure Firebase as an AuthN provider 
securityDefinitions: 
    firebase: 
     authorizationUrl: "" 
     flow: "implicit" 
     type: "oauth2" 
     # Replace YOUR-PROJECT-ID with your project ID in the issuer and audiences fields 
     x-google-issuer: "https://securetoken.google.com/YOUR-PROJECT-ID" 
     x-google-audiences: "YOUR-PROJECT-ID" 
     x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/metadata/x509/[email protected]" 

# Add Firebase as an authN provider to specific endpoints... 
security: 
    - firebase: [] 

Vous pouvez également utiliser le Firebase Admin SDK pour écrire middleware d'authentification validates your tokens:

FirebaseAuth.getInstance().verifyIdToken(idToken) 
    .addOnSuccessListener(new OnSuccessListener<FirebaseToken>() { 
     @Override 
     public void onSuccess(FirebaseToken decodedToken) { 
      String uid = decodedToken.getUid(); 
      // ... 
     } 
});