je bosse depuis un moment avec node.js et php coté server et pour l'authentification j'utilise toujours le couple mot de passe login pour se connecté avec quelque fioritures a droite et a gauche, mais la je me trouve devant une petite question, je doit me mettre au dev de server d'api mobile et donc ben pour securiser le tous, j'ai pensé au API key mais je n'arrive pas a visualiser comment mettre en place ce systeme, l'api key comme elle sera traité par ionic et comme la recupérer sur le serveur pour validé l'authentification.

Quelqu'un qui a deja travaillé avec des api-keys pourrait-il éclairer un peut mieux ma lenterne?

5 réponses


flan
Réponse acceptée

Ce que j'entends par en dur, c'est que tu vas déployer ton application avec une clef d'API directement avec, qui aura donc accès à tes endpoints (ou même ne pas demander de clef d'api du tout, cf. Allociné). Le soucis est que n'importe qui pourra analyser tes sources / ton traffic pour utiliser ton API sans passer par ton application. C'est aussi ce qui est utilisé pour cet exemple d'application basé sur ionic.

Pour transmettre le token, n'utilise pas /api/v1/test/edzejhjbhjvghlkbhk2ljkhbj3. Comment tu vas faire pour des endpoints plus complexes ? Utilise plutôt /api/v1/test?token=edzejhjbhjvghlkbhk2ljkhbj3 ou alors par les en-têtes HTTP (exemple avec angular) :

            return $http.get('https://api.junk.dev/v1/test', {
                headers: {
                    'X-API-Key': CONFIG.API_KEY,
                }
            });

Pour récupérer le contenu de cette en-tête avec PHP, tu pars juste sur l'utilisation de $_SERVER, tandis qu'avec Node.js (express non ?), req.headers.

Et la réponse à parser, tu vas sûrement t'orienter vers du JSON, donc tu peux te référer à la documentation Javascript classique !

Defy
Auteur

Personne pour une petit idée?

Je n'ai absolument pas compris ta phrase suivante :

je doit me mettre au dev de server d'api mobile et donc ben pour securiser le tous

Ce que tu souhaites essaies faire, c'est pouvoir permettre de t'authentifier auprès de ton API depuis ton application ?
Pour récupérer un token, tu peux soit l'inscrire en dur dans ton application (moyen, mais cela se fait de façon plutôt courante), ou alors en donner un à l'utilisateur après avoir vérifié son classique couple username / pass (endpoint spécifique de login au niveau de l'API).
Tu as ensuite plusieurs possibilités pour transmettre ledit token : utiliser une en-tête HTTP spécifique (X-Token, …) ou alors une plus standard (Authorization, cf. OAuth). Et pour le stocker, une colonne supplémentaire dans ta table et c'est terminé.

Defy
Auteur

qu'est ce que tu entend par en dur? tu aurais un exemple pour apuyé tes differentes version? j'arrive pas a visualiser la chose.
En faite, j'arrive pas a visualiser comment je doit transmettre le token et comment je doit le parser en retour. Je doit faire une url et lui passer le token en parametre du genre /api/v1/test/edzejhjbhjvghlkb hk2ljkhbj3? Les header HTTP je n'ai jamais vraiment utilisé mais je sais un peut leur fonctionement.

Defy
Auteur

je te remercie fortement de l'aide apporté :-)