6
votes

J'ai besoin d'une API. Où devrais-je commencer?

Je construis une application PHP à partir de zéro (à l'aide de KoHana3 Cadre). Je vais archiver cela afin que je puisse utiliser une API pour accéder aux données en interne. Dans le même temps, je veux éventuellement l'offrir au public.

Je prévois d'utiliser la méthode d'accès reposant. Cependant, j'ai du mal à trouver des informations claires sur la manière de sécuriser correctement l'API. En d'autres termes, comment puis-je implémenter les signatures API et l'accès?


0 commentaires

6 Réponses :


5
votes

Vous pouvez essayer Frapi . Il vous permettra rapidement de construire votre API reposante, que vous pouvez ensuite utiliser pour votre application et à une date ultérieure, exposer la même API publiquement.


1 commentaires

Wow Frapi a l'air assez doux, bien que leur site soit beaucoup plus spartian qu'il ne l'ait l'air une fois que vous commencez à cliquer sur autour de vous.



1
votes

Je pense qu'un bon endroit pour commencer serait de lire sur des informations générales sur la signature numérique. Wikipedia est une excellente ressource http://en.wikipedia.org/wiki/public_key_infrastructure ou http://fr.wikipedia.org/wiki/x.509 .
Sur un niveau de base, je donnerais à chaque client une clé privée. Dans la bibliothèque cliente, je chiffrerais la clé. Lorsqu'un client fait une demande vérifie que la clé est celle que vous avez émise à ce client particulier.


1 commentaires

Oui. C'est ce que j'essaie de comprendre. OAuth est confondre dans les méthodes de la manière de mettre en œuvre en tant que fournisseur au sein de ma propre demande. Je préférerais le faire moi-même, apprendre, puis envisager d'utiliser leurs bibliothèques, en constante évolution. J'ai des problèmes sur les bases. Vous avez expliqué quelque chose de similaire à ce que j'ai envisagé. Bien que les sessions et les cookies jouent également un rôle sur la conservation des demandes connectées. L'utilisation de la connexion déléguée est également un tout autre problème.



0
votes

J'ai fait une API de repos PHP à l'aide de CodeDediciter avec une authentification de base (fournissant «ID de la société» et «clé API» en tant que nom d'utilisateur / mot de passe). Plus tard, nous avons constaté qu'il était nécessaire de prévoir des clés de session directement liées à une clé API, uniquement avec une heure d'expiration.

Fondamentalement, nous avons interrogé différents types de données dans notre DataSore (variété NOSQL :) en fonction de la " méthode "a été fournie dans l'URL. Nous avons accédé à cela en utilisant la capacité de «segment» fournie par CodeIdigniter.

Puis nous avons enveloppé chaque réponse avec un «JSON_ENCODE» qui a été renvoyé et nous avons également utilisé une connexion HTTPS pour la sécurité.

Pour la classe client, nous avons tout emballé dans des appels tels $ client-> get_my_data ($ API_KEKKY), avec un calque situé sous Php libcurl, ce qui fonctionne vraiment bien pour fournir l'authentification de base.

espère que cela aide,

curl_get xxx


2 commentaires

Par classe client, voulez-vous dire l'interface principale que les clients parlent avec des URL reposantes? Comme, client [contrôleur], get_name [méthode] avec URL comme: site.com/api/client/123?apikey=12345 qui incendie $ client-> get_name ('123', apkey)?


Thats oui c'est vrai, alors le client peut inclure la classe et avoir accès à celui-ci dans un fichier PHP, je vais mettre à jour ma réponse avec un exemple de fonction "Obtenir" pour boucle.



0
votes

Votre question est un peu plus grande que cela; Mais je peux offrir une petite observation sur le repos.

J'ai trouvé avec repos, c'est-à-dire qu'il est préférable d'utiliser des clés artificielles pour le modèle de données sous-jacent, plutôt que des clés naturelles.

Par exemple, envisagez l'URL resuldl: https: //server/yourapp/vievoise/1234.html Cela montrerait à l'utilisateur avec ID 1234. Toutefois, si vous avez utilisé des clés naturelles, vous pourriez avoir un URL quelque chose comme ça https: //server/yourapp/viewuser/bob.html ou pire si au lieu de BOB sa "BOB x" ou "BOB? Clé = valeur". Vous ne voulez pas avoir à penser à générer des URL non valides.


2 commentaires

Merci, mais pas la réponse que je cherchais. Je cherche des clés d'authentification ... sorte de.


Je n'ai pas compris cette partie de la Frapi (je ne vois pas d'où ils définissent la définition de la "clé API". J'ai fait mon contrôle d'accès en termes de sujets et d'autorisations. Vous pouvez utiliser HTTP Basic / SSL ou SSL Mutual Auth pour établir un identifiant de sujet et tout ce que vous voulez pour l'autorisation.



2
votes

Oauth serait un bon choix. Donc, une seule paire de clé / valeur. Vous voudrez peut-être aussi regarder Mashape mais pas tout à fait sûr qu'il convient à ce que vous essayez de faire.


0 commentaires