android - studio - Cómo integrar la autenticación Firebase con los puntos finales del motor de Google Apps
firebaseui (2)
Debería poder usar Google Cloud Endpoints como un proxy de autenticación delante de su aplicación. Los puntos finales admiten la validación de tokens de autenticación de Firebase mediante la configuración de su plantilla 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: []
Alternativamente, puede usar el SDK de administración de Firebase para escribir middleware de autenticación que valide sus tokens :
FirebaseAuth.getInstance().verifyIdToken(idToken)
.addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
@Override
public void onSuccess(FirebaseToken decodedToken) {
String uid = decodedToken.getUid();
// ...
}
});
Estoy escribiendo un servidor backend para aplicaciones móviles. El backend se ejecuta en el motor de aplicaciones de Google y está escrito en Java.
Quiero que los usuarios puedan iniciar sesión con una identidad federada como Facebook.
Vi que Google admite este tipo de autenticación para aplicaciones móviles a través de la autenticación Firebase. ¿Cuál sería la mejor manera de integrar la autenticación firebase con los puntos finales de mi motor de aplicación actual?
Ya uso el almacén de datos de la plataforma en la nube y no deseo trabajar con la base de datos de base de fuego, solo uso el método de autenticación.
Gracias.
También estoy buscando una respuesta a esto. Mi mejor 5c hasta ahora es
- Utilice FireBase para configurar métodos de inicio de sesión, etc. desde la consola
- Use FireBase UI (en versión beta) para web o "Integración de proveedor de identidad federada" para iOS / Android para configurar el flujo de autenticación
- Recupere los detalles de token / autenticación en su cliente web / iOS / Android y páselos a los puntos finales de la nube como, por ejemplo, los encabezados de solicitud HTTP.
- Inyecte javax.servlet.http.HttpServletRequest a sus métodos de punto final (solo agregue un argumento y Google inyecte el objeto de solicitud automáticamente)
- Cree un método que su punto final llamará para cada solicitud (que necesita autenticación) que manejará la validación de las credenciales que ha pasado como encabezados de solicitud HTTP
- Use FireBase Java SDK para llamar a FireBase para validar las credenciales (para hacer esto, debe exportar la configuración json desde la consola de Firebase) y cargar el SDK con ellos, por ejemplo, en uno de sus 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");
}
}