API Client Secret avec le RESTE à l'Aide Slim Cadre
J'ai une simple API REST (à l'aide de la Slim framework) où l'utilisateur peut appeler une page comme ceci:
subdomain.domain.com/api/musician/id/3273
pour récupérer et afficher une certaine simple de données JSON.
Je tiens à ajouter certains d'authentification à cette afin que seuls les utilisateurs avec un certain type de client ID (au minimum) peuvent accéder à ces données. J'aimerais que l'utilisateur puisse passer dans leur secrets du client/informations sur l'id dans l'URL, mais je veux m'en sortir sans massacrer le RESTE de la structure de trop.
Est-il un certain cadre ou la bibliothèque qui serait particulièrement efficace pour atteindre cet objectif?
Certaines API de services exigent que vous envoyez des choses comme un client_id dans l'en-tête de la demande. Vous êtes les utilisateurs peuvent utiliser cURL pour ajouter des en-têtes personnalisés à leurs demandes que vous pouvez ensuite accéder à votre script.
OriginalL'auteur user1427661 | 2013-04-07
Vous devez vous connecter pour publier un commentaire.
Moi aussi eu ce problème pendant un certain temps, j'ai aussi une question sans réponse concernant ce sujet(ici).
Fondamentalement, vos choix sont OAuth ou quelque chose de personnalisé.
Maintenant, pour oauth, ils travaillent sur la version 2.0 et vous ne devriez pas commencer un nouveau projet en utilisant OAuth 1, mais la chose est que, oauth2 est loin d'être fini et il y a peu de soutien pour un oauth2 server pour php maintenant. Je ne veux pas dire que oauth2 2 pattes/3 pattes est complexe, mais c'est plus que ce qu'elle devrait être, et aussi après avoir lu beaucoup de posts à ce sujet, j'ai décidé que pour l'instant, je dois aller avec quelque chose d'autre, pas oauth(d'ailleurs, l'un des oauth créateurs ont quitté le projet, car il n'était pas satisfait de la direction que ce projet va) car il est dans un "indécis" de l'état(bien sûr, les gens diront c'est à peu près prêt à l'emploi, mais je n'aime pas, je veux quelque chose de déjà prouvé sa, ne veux pas être un rat de laboratoire pour les grandes entreprises pour tester oauth [oui, oauth va pour les entreprises énormes intérêts, et non pas la vôtre]).
De toute façon, pour en revenir à mon problème, j'ai toujours aimé la façon dont Amazon fonctionne avec leur api, c'est tellement simple à mettre en œuvre, alors pourquoi ne pas aller dans la même direction? Je veux dire, amazon est l'un des plus grands de l'api de fournisseurs là-bas, si ils l'utilisent, ils ont une vraie raison de le faire.
Dit et fait, en moins de 2 heures j'ai eu mon authentification/autorisation de protocole en place, et devinez quoi, il était facile, simple et j'aime écrire(pour ne pas être frustré parce que de l'authentification oauth).
Un bon article qui m'a aidé à démarrer: http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/ qui, fondamentalement, exmplains ce que vous avez à faire.
Donc, si j'étais vous, je commencerais à partir de là 🙂
OriginalL'auteur Twisted1919
Si votre API clients ne sont pas en agissant "au nom de" vos utilisateurs puis OAuth est exagéré à mon avis.
Une API standard clé que vous pouvez question sera les travaux. Vous pouvez ajouter une demande de signature si nécessaire.
Certains Slim exemples: ici et ici
OriginalL'auteur Shane O'Grady
Peut-être que cela peut être utile slim HttpBasicAuth
Vous pouvez utiliser HTTP basic auth par demande de valider si l'utilisateur qui font la demande d'un utilisateur valide.
OriginalL'auteur Yago Riveiro
Depuis RESTE est apatride, vous devez boucher si vous le souhaitez différente de la représentation des données pour les différents utilisateurs (ergo - dynamique), ce qui signifie que pour chaque demande, vous aurez à fournir des données (à propos de l'état de l'utilisateur) qui ne sont pas pertinents pour l'entité spécifique.
Donc, soit authentifier l'utilisateur à chaque fois, ou cookie temporaire + session, ou, si vous avez des tiers concernés, OAuth.
Voir aussi Dave Ingram - Conception d'API présentation
OriginalL'auteur Artjom Kurapov