59 votes

Création de clés API avec Web API

Je suis intéressé à créer des clés API pour web.api et permettre aux clients de communiquer avec l'API en utilisant les clés API plutôt que l'autorisation fournie par web.api.

Je veux que plusieurs clients puissent communiquer avec le web.api. Au lieu de créer un nom d'utilisateur et un mot de passe, puis-je utiliser une clé API et permettre aux clients de communiquer avec le client.

Y a-t-il une fonctionnalité intégrée pour cela?

Si quelqu'un souhaite l'implémenter, comment s'y prendre?

72voto

Cuong Le Points 29324

Vous pouvez y parvenir en utilisant Authentification HMAC. Fondamentalement, il peut y avoir une table de base de données appelée ApiKey (apiKey, secretKey). Chaque client a sa propre Apikey et sa propre clé secrète :

  1. ApiKey est comme une clé publique et sera envoyée via HTTP (similaire à un nom d'utilisateur).

  2. La clé secrète n'est pas envoyée via HTTP, utilisez cette clé secrète pour hacher certaines informations et envoyer la sortie hachée au serveur. Du côté serveur, en fonction de la clé publique, vous pouvez obtenir la clé secrète correspondante et les informations de hachage pour les comparer avec la sortie hachée.

J'ai posté la réponse détaillée sur : Comment sécuriser une API Web ASP.NET

Vous pouvez remplacer Nom d'utilisateur par ApiKey et Mot de passe haché par clé secrète dans ma réponse pour correspondre à votre idée.

0 votes

Alors vous exigerez que le client construise le Hash à chaque demande d'API? Quel est le surcoût impliqué ici?

0 votes

Je pense que c'est ainsi que fonctionne HMAC, pourriez-vous expliquer vos questions plus en détail s'il vous plaît?

0 votes

Si vous appelez ComputeHash(string hashedPassword, string message) sur chaque méthode que le client appelle, combien de temps cela ajoute-t-il à chaque appel ? Combien de temps faut-il à ComputeHash pour se terminer en moyenne ?

5voto

Mike Ranscombe Points 41

Il y a un article intéressant ici http://www.asp.net/web-api/overview/working-with-http/http-message-handlers sur l'utilisation des gestionnaires de messages HTTP qui vous aideront à atteindre ce que vous voulez.

Il y a même un exemple de mise en œuvre des clés d'API à mi-chemin de la page!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X