2013-02-13 3 views
3

Supposons que j'ai une application Android qui a besoin de faire quelques appels API. Je veux authentifier les applications déployées pour que mon API ne puisse pas être utilisée par des clients non autorisés.authentification des applications natives mobiles

je peux mettre quoi que ce soit dans l'application - les en-têtes HTTP qui signe les demandes, avec nonces. Cependant, si quelqu'un décompile l'application, il sera capable de répliquer la méthode d'authentification, comme l'algorithme pour générer la signature et le secret partagé. Avec Java et Android, ce n'est pas irréalisable.

Est-il possible d'éviter? Probablement pas, mais je voulais être sûr que la cryptographie n'a pas de solution pour moi.

Répondre

3

Il n'y a pas de solution à ce problème. Votre serveur ne peut pas savoir qu'il parle à "votre" client. La seule chose que vous pouvez raisonnablement authentifier est l'utilisateur, pas l'application. Il est également possible d'authentifier raisonnablement certains périphériques matériels sécurisés, mais cela coûte très cher et ne garantit toujours pas l'utilisation de votre client. cela démontre seulement que l'utilisateur a accès à l'un de vos périphériques matériels sécurisés.

Cela a été discuté à plusieurs reprises à travers SO. Ces postes discuter de la question et un lien vers beaucoup plus de ces discussions:

Alors que les postes ci-dessus sont formulées en termes d'iOS, la question est universelle.

Questions connexes