¿Cómo está comprobando Google SHA1 y el nombre del paquete en las llamadas de la API?

Al registrar una aplicación de Android en la consola de la API para acceder a la API de Google, debes introducir la huella dactilar de los certificados SHA1 de tus aplicaciones y el nombre del paquete de la aplicación.

Ahora me preguntaba cómo Google podría verificar que estos valores son correctos cuando las llamadas api son simples peticiones HTTP (en el caso más simple, cuando no se utiliza su cliente API, que podría añadir algunos valores de encabezado)? Debe proporcionar su clave de API al realizar una llamada de API, pero esto no demuestra que los valores introducidos son correctos.

One Solution collect form web for “¿Cómo está comprobando Google SHA1 y el nombre del paquete en las llamadas de la API?”

Usted puede obtener el nombre del paquete, así como la huella digital sha 1 de la aplicación instalada con bastante facilidad.

private void printSha1() { List<ApplicationInfo> mAppList = getPackageManager().getInstalledApplications(0); for (ApplicationInfo info :mAppList) { Log.d(TAG, "Package Name: " + info.packageName); Log.d(TAG, "Sha1: " + getCertificateSHA1Fingerprint(info.packageName)); } } private String getCertificateSHA1Fingerprint(String packageName) { PackageManager pm = getPackageManager(); int flags = PackageManager.GET_SIGNATURES; PackageInfo packageInfo = null; try { packageInfo = pm.getPackageInfo(packageName, flags); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } Signature[] signatures = packageInfo.signatures; byte[] cert = signatures[0].toByteArray(); InputStream input = new ByteArrayInputStream(cert); CertificateFactory cf = null; try { cf = CertificateFactory.getInstance("X509"); } catch (CertificateException e) { e.printStackTrace(); } X509Certificate c = null; try { c = (X509Certificate) cf.generateCertificate(input); } catch (CertificateException e) { e.printStackTrace(); } String hexString = null; try { MessageDigest md = MessageDigest.getInstance("SHA1"); byte[] publicKey = md.digest(c.getEncoded()); hexString = byte2HexFormatted(publicKey); } catch (NoSuchAlgorithmException e1) { e1.printStackTrace(); } catch (CertificateEncodingException e) { e.printStackTrace(); } return hexString; } public static String byte2HexFormatted(byte[] arr) { StringBuilder str = new StringBuilder(arr.length * 2); for (int i = 0; i < arr.length; i++) { String h = Integer.toHexString(arr[i]); int l = h.length(); if (l == 1) h = "0" + h; if (l > 2) h = h.substring(l - 2, l); str.append(h.toUpperCase()); if (i < (arr.length - 1)) str.append(':'); } return str.toString(); } 

Si ejecuta este código imprimirá el nombre del paquete y su impresión sha 1. Éstas son las dos cosas que usted proporciona mientras que crea la llave de la API, así que Google traza estas dos cosas contra la llave que genera.

Como puede ver su posible acceso al nombre del paquete y su impresión SHA 1, la otra cosa restante es la clave API que proporciona a la biblioteca u otra aplicación necesaria (Google Play Service) a través de su código oa través de xml (Manifest, xml config archivo).

Así que cada vez que Google le sirve algo, puede comprobar el mapeo relevante que generó cuando generó la clave desde la consola del API.

El código para el nombre del paquete se toma desde aquí

  • SecurityException: No se puede iniciar el servicio Intención {act = com.google.android.c2dm.intent.REGISTER pkg = com.google.android.gms (tiene extras)}
  • Seguridad y autenticación cliente-servidor
  • ¿Cómo proteger Google In-App Billing v3 contra la piratería de código?
  • Aplicación NDK Firma de cheque
  • Cómo guardar la clave secreta de forma segura en android
  • ¿Cuál es la forma más segura de autorizar a un usuario en Android?
  • Conexión a un servicio web desde una aplicación de Android con seguridad
  • ¿La mejor forma de proteger datos sensibles a aplicaciones de Android?
  • Cambio de UID en la seguridad de Android
  • ¿Cómo puedo diseñar una API / autenticación segura para aplicaciones móviles para acceder a un servicio?
  • ¿Existe una manera de almacenar de forma segura los datos de usuario en un dispositivo Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.