Question

Je cherchais à mettre en place une API et envisageais de gérer l’accès à l’API, mais ce que je fais est plutôt un système b2b permettant aux entreprises d’accéder aux données à intégrer à leurs sites. Je n'aurai pas de b2c au début.

Donc, oauth ne semble pas être le bon outil pour moi. Je cherchais des sources concernant la construction d’un système basé sur des clés, mais je n’ai rien trouvé.

Quelque chose est disponible sur le marché? Est-il préférable de simplement créer un hachage de certaines données soumises par les utilisateurs ou quelque chose du genre?

Était-ce utile?

La solution

Ce dont vous avez besoin est simplement quelque chose qui identifie de manière unique l'utilisateur ... Utilisez simplement un UUID ou peut-être le hachage d'un UUID.

Assurez-vous simplement que cet identifiant est transmis sur un canal sécurisé. Si vous le passez sur un canal non sécurisé, vous devrez peut-être mettre en œuvre une méthode de sécurisation de l'identifiant similaire à l'authentification de résumé HTTP.

Autres conseils

Examinez presque tous les sites / services Web 2.0. Ils ont tous des degrés différents d'authentification et de gestion des clés d'API. Flickr, Twitter, Github, etc.

En fonction des besoins, dans le monde des API Web, il est assez standard de donner à vos partenaires / développeurs une clé API (identification) et de les obliger à signer les appels (authentification). Il y a beaucoup de façons de spécifier des signatures. Une jolie commune ces jours-ci est; prenez tous les paramètres de l'appel, un horodatage (+/- 5 min), un secret partagé et hachez-le à l'aide de SHA-1 ou MD5 (mieux SHA-1).

Vous pouvez le mettre en œuvre vous-même ou trouver un partenaire (il en existe quelques-uns) pour le faire à votre place.

L'approche générale suggérée ici (utiliser un hachage qui inclut une clé API et l'heure actuelle) est une bonne chose - certainement préférable à l'inclusion d'un "mot de passe". dans le message.

Cependant, il existe un moyen standard de chiffrement "mung" " opération appelée HMAC. Cela vaut la peine de regarder si vous voulez quelque chose de plus standard / robuste / sûr.

Enfin, il y a évidemment le "gold standard". parmi les options de sécurité - utilisez un certificat numérique pour signer toutes les demandes (cela peut être coûteux en calcul) ou pour signer une demande initiale qui génère ensuite une clé de session à utilisation restreinte (par exemple, une API uniquement, expirant au bout de 60 minutes).

Vous pouvez également utiliser le protocole SSL bidirectionnel pour la couche de transport et vous fier à cela au sein de l'application / API.

Cela dépend vraiment de votre niveau de sécurité ...:]

Je n'utiliserais pas uniquement les données soumises par les utilisateurs, car cela pourrait créer une situation dans laquelle les clés d'API sont devinables. En général, je prends certaines données générées par l'utilisateur, puis les combine avec des données relativement uniques (c.-à-d. L'heure actuelle du système) et j'empêche que, à l'aide de SHA-1 ou quelque chose du genre, je modifie peut-être la représentation si je ne le fais pas. veux que ce soit évidemment un hachage SHA-1, et ensuite l'utiliser comme clé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top