16

Piszę serwer zaplecza dla aplikacji mobilnych. Backend działa na silniku aplikacji Google i jest napisany w Javie.Jak zintegrować uwierzytelnianie firebase z punktami końcowymi silnika aplikacji Google

Chcę, aby użytkownicy mogli logować się przy użyciu tożsamości federacyjnej, takiej jak Facebook.

Widziałem, że Google obsługuje tego rodzaju uwierzytelnianie dla aplikacji mobilnych za pomocą uwierzytelniania firebase. Jaki byłby najlepszy sposób zintegrowania uwierzytelniania firebase z moimi obecnymi punktami końcowymi silnika aplikacji?

Korzystam już z magazynu danych platformy chmurowej i nie chcę pracować z bazą danych bazy danych firewall, wykorzystuję tylko metodę uwierzytelniania.

Dzięki.

Odpowiedz

6

Poszukuję również odpowiedzi na to pytanie. Mój najlepszy 5c tak daleko jest do

  • Korzystanie Firebase ustawić znak w metodach itp z konsoli
  • Zastosowanie Firebase UI (w wersji beta) dla sieci web lub „Federalne integracji dostawcy tożsamości” dla iOS/Androida utworzone przepływ uwierzytelniania
  • sprowadzaniu szczegółów tokena/uwierzytelniania na WWW/iOS/Android klienta i przekazać je do punktów końcowych w chmurze jak na przykład żądania HTTP Headers
  • Zadozować javax.servlet.http.HttpServletRequest do punktu końcowego metody (po prostu dodaj argument i Google z wtryskiem obiektu żądania automatycznie)
  • Utwórz metodę, którą Twój punkt końcowy będzie wywoływał dla każdego żądania (wymagającego uwierzytelnienia), które będzie obsługiwać sprawdzanie poprawności poświadczeń, które przekazałeś jako nagłówki żądań HTTP
  • Użyj zestawu SDK Java FireBase, aby połączyć się z FireBase, aby sprawdzić poprawność poświadczeń (w kolejności aby to zrobić, trzeba wyeksportować konfigurację json z konsoli Firebase) i załadować SDK z nich, na przykład, w jednym ze swoich serwletów:

@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

I stworzył nowe pytanie z podobnym pytanie ... http://stackoverflow.com/questions/39124587/integrate-firebase-auth-with-google-app-engine-cloud-endpoints – SmilingM

0

Powinieneś być w stanie wykorzystać Google Cloud Endpoints jako serwer proxy uwierzytelniania przed ap str. Punkty końcowe supports validating Firebase Authentication tokens konfigurując swój szablon 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: [] 

Alternatywnie, można użyć Firebase Admin SDK napisać uwierzytelniania middleware że validates your tokens:

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