web-dev-qa-db-fra.com

API Web création de clés d'API

Je souhaite créer des clés d'API pour web.api et permettre aux clients de communiquer avec l'API à l'aide des clés d'API plutôt que l'autorisation fournie par web.api.

Je souhaite 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.

Existe-t-il une telle fonctionnalité intégrée?

si l'on veut le mettre en œuvre, comment le contournerais-tu?

58
DarthVader

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 possède chaque Apikey et clé secrète:

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

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

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

Vous pouvez changer le nom d'utilisateur par ApiKey et le mot de passe haché par clé secrète sur ma réponse pour mapper avec votre idée.

66
cuongle