2009-08-14 5 views
0

Un site Web que je partage nous a été demandé d'ajouter du contenu à notre site, ce qui est une excellente publicité pour nous. Le hic, c'est qu'en raison de la nature de notre entreprise, nous devons faire très attention à qui a accès à notre site. (Nous distribuons de la musique pour les étiquettes aux stations de radio)Comment puis-je authentifier les utilisateurs de mon API?

Suite jusqu'à présent?

J'ai donc commencé une nouvelle page pour le contenu. Je pense que je veux avoir une sorte de chaîne hachée avec le nom du site appelant, une clé pour notre site et peut-être la date, cryptée et incluse dans la chaîne de requête ou un cookie envoyé depuis le site appelant. L'objectif serait d'empêcher que cela ne soit appelé depuis d'autres sites (leur site est également protégé par mot de passe), y compris l'usurpation DNS pour tromper mon site et lui faire croire qu'il est demandé sur ce site.

Donc, je pense que c'est une bonne solution.

  1. Est-ce? Si non, que devrais-je essayer à la place?
  2. Comment diable puis-je faire cela? Je pense que j'aurais appelé l'API à l'intérieur d'un iFrame sur leur site, avec la source comme mon site et la page avec la chaîne de requête, mais comment devrais-je obtenir l'URL du site appelant? Et que dois-je utiliser pour chiffrer la clé de chaîne de requête?

Répondre

1

Je recommanderais d'utiliser la cryptographie à clé publique. Pour chaque utilisateur, générez une clé publique que vous lui envoyez et une clé privée pour vos enregistrements.

Ils devraient crypter l'heure actuelle avec d'autres informations auto-identificatrices comme l'adresse IP. Ensuite, lorsque vous recevez la poignée de main, vous pouvez le déchiffrer à l'aide de la clé privée, puis vérifiez que l'heure n'est pas trop éloignée, que l'adresse IP est correcte, etc.

0

Vous pouvez exiger des connexions SSL et distribuer des certificats de votre serveur que vos clients doivent utiliser pour valider leur identité. Ce serait l'approche la plus simple.

EDIT

Il me semble que je ne suis pas sûr si vous êtes inquiet au sujet de quelqu'un d'essayer d'utiliser le compte de quelqu'un d'autre ou si votre service est censé être payé sur une base de domaine. Vous ne pouvez vraiment pas vous protéger contre ce dernier, car quiconque est assez déterminé peut simplement créer sa propre API pour s'interfacer avec le vôtre dans un contexte valide et l'appeler depuis n'importe quel autre site vers lequel il souhaite propager l'information.

Questions connexes