2017-09-16 6 views
0

J'utilise Django et nous prévoyons d'ouvrir une partie de notre API pour une utilisation par des tiers. Jusqu'à présent, nous utilisions DRF avec l'authentification de session pour notre application Web Django et DRF avec JWT pour notre application Android. Ce que je voudrais savoir, c'est si l'appel provient de notre propre application (application webapp/android) ou d'applications tierces (ils peuvent appeler à partir de leurs propres applications, qui peuvent être d'autres applications web/applications téléphoniques). Y a-t-il un moyen de le distinguer? Nous voulons compter le numéro d'appel API tiers sur notre serveur.Distinguer l'appel API de sa propre application/webapp vs serveur

Répondre

0

Votre application Android peut ajouter l'en-tête User-Agent avec la version de l'application. Vous pouvez donc distinguer les demandes. Cependant, il n'est pas très fiable - car n'importe quel client Web peut envoyer de tels en-têtes. Ici vous pouvez signer vos demandes. Prenez URL ajouter une valeur secrète calculer md5/sha2 à partir de ces valeurs et ajouter à la demande. La protection est basée sur l'idée que vous connaissez la valeur secrète. C'est acceptable pour les tâches non critiques mais peut être risqué pour les applications financières.

+0

Vous avez compris. Notre API fait partie de notre solution SaaS, notre client peut utiliser à la fois notre application (web et téléphone) et son application (en utilisant l'API 3rs party). Je voudrais contrôler le non. des appels API tiers par mois. C'est ce que l'importance est. Toute valeur (md5/sha2) stockée dans les cookies de session peut être mal utilisée par de mauvais utilisateurs. Quelque chose comme JWT pour notre application et jeton à long terme (comme un jeton unique généré par Google/Zoho pour leurs API) pour une application tierce, cela aiderait-il? – Sayantan

+1

Il n'y a aucun moyen de distinguer absolument. Supposons que votre client Android a été piraté - c'est votre code qui agit de manière très différente. Est-ce toujours "le tien" ou "le leur"? –

+0

Je veux demander - c'est le but final de la distinction? Si les statistiques: quelle précision cela devrait-il être? Vous n'obtiendrez jamais 100%. mais si 98-99% est suffisant - utilisez le premier moyen. Les utilisateurs Mal sont juste des erreurs dans les statistiques. Si vous voulez offrir une meilleure sécurité, c'est une mauvaise façon de procéder. On ne devrait jamais compter sur les données du client. L'application serveur doit traiter tous de la même manière sécurisée. –