Los secretos de la aplicación están relacionados con el "Flujo de autenticación del servidor web" (en particular, OAuth2), que es la forma en que un servidor se autentica ante el otro que tiene acceso a los recursos que proporciona el servidor. Puede considerarlo como una "contraseña de autorización", donde la contraseña le permite al servicio que llama acceder al servicio al que se llama.
Los clientes móviles no deben ser confiables, y nunca deben usar un secreto de aplicación; Este es un riesgo de seguridad inherente, ya que puede permitir que una aplicación maliciosa acceda al servicio. Una vez que el secreto de una aplicación está disponible, el servicio debe modificarse para evitar que las aplicaciones malintencionadas abusen del servicio en nombre de los usuarios.
Tenga en cuenta que no puede usar los ataques de reproducción con OAuth2 porque usa un número aleatorio para saltear cada transacción, aunque el problema de la descompilación sigue siendo un factor muy importante. De hecho, se han escrito artículos sobre la cantidad extrema de aplicaciones de Android que son vulnerables debido a que se filtraron los secretos de la aplicación.
Una vez que tenga una aplicación secreta, puede emular la aplicación a la que corresponde la clave secreta y no puede distinguir la diferencia entre una aplicación autorizada y publicada y un clon malicioso. Muchos desarrolladores no entienden que la aplicación secreta es el equivalente de una contraseña o una clave de cifrado privada, y debe tratarse como tal.
Los clientes móviles y otras aplicaciones que no sean de confianza (aplicaciones basadas en el navegador web) deben usar el "flujo de autenticación del cliente", en el que solo se usa la clave de la aplicación.