¿Cuáles son las mejores prácticas para que una aplicación móvil se comunique con el servidor que requiere autenticación?

Como ya se sugirió, la autenticación tradicional se realiza mediante un enfoque basado en token:
Lo cual no es más que enviar las credenciales de los usuarios al servidor utilizando HTTPS y, en respuesta, recibirá un token basado en temporizador. Comunica sus llamadas posteriores agregando este token, pero después de algún tiempo el token caducará y necesitará que el usuario vuelva a ingresar la contraseña y en respuesta obtendrá un nuevo token. De esta manera, nunca almacena la contraseña del usuario.

Otra forma de la que he oído hablar es mediante el uso de OAuth 2: flujo de contraseña del propietario del recurso. Esto se usa más ampliamente en estos días, por lo general, las aplicaciones de Android usan webview para comenzar este proceso, échale un vistazo.

Además, esta es una pregunta bien discutida sobre Stackoverflow y los grupos de Google, así que intente buscar en Google esta consulta.

Espero que esto ayude.

Sí, eso es cierto. Si alguien obtiene la clave, puede actuar en su nombre.

Esto se conoce popularmente como ataque de secuestro de sesión y una de las formas más fáciles de lidiar con él es la conexión https. Y en caso de que no lo sepa, Facebook tuvo el mismo problema en 2010, se deshizo de él al implementar https obligatorios en todas sus llamadas del lado del servidor.