2011-12-28 2 views
2

Supposons que j'ai créé mon service REST en douceur et que je renvoie des résultats JSON.Protection de mon service REST, que j'utiliserai du côté client avec APIkey

J'ai également mis en œuvre la clé API pour mes utilisateurs de communiquer pour mon service. Puis, la société A a commencé à utiliser mon service et je lui ai donné une clé API.

Par exemple, laisse supposer que mon URL de service est la suivante:

https://api.myservice.com/data?apikey= {key_comes_here}

principal problème est que je vais avoir mon propre site web qui a également besoin d'appeler mon propre même web REST un service. Si je passe la clé API de mon site Web lorsque j'appelle mon propre service REST, qu'est-ce qui empêchera quelqu'un d'utiliser par exemple Firebug, voir quelle clé API j'utilise dans mon application web et utiliser la même clé API?

Répondre

1

La méthode utilisée par Google dans par exemple. Google Maps consiste à lier l'API à une URL. Vous ne pouvez donc utiliser la clé fournie dans les applications que depuis l'URL spécifiée lorsque vous avez demandé la clé. Ceci est particulièrement utilisable dans les applications Web, où vous pouvez obtenir l'URL de référence sur le serveur.

+0

Le référent ne peut-il pas être usurpé? http://en.wikipedia.org/wiki/Referrer_spoofing – djna

+0

Cela semble très bien, mais si je dois exposer l'accès à mon service Web à partir d'un appareil mobile? –

+0

@djna Le référent peut bien sûr être usurpé, mais lorsque vous présentez une API publique pour une utilisation sur des sites Web, les utilisateurs accèdent à l'API via leur navigateur Web standard. Si un utilisateur normal doit usurper le referer, le site Web ne sera pas disponible pour la majorité des utilisateurs. Si l'utilisateur a un accès direct à l'API, il peut toujours voir votre clé d'API, même lorsque le site est protégé par HTTPS. Donc, si vous voulez cacher la clé, je pense que vous devriez accéder au service à partir d'un système dorsal. Si vous souhaitez protéger le trafic d'arrière-plan contre les renifleurs de réseau, vous pouvez utiliser HTTPS. –

Questions connexes