Bonjour,
Je suis en train de m’intéresser de près aux API, serveurs REST (PHP) et application clientes en Javascript.
J'ai commencé a developper une API avec Silex, le micro framework, tout fonctionne très bien à ce niveau.. Par contre j'ai des soucis avec le coté sécurité.
Je voudrais pouvoir faire une application Javascript uniquement qui communique avec cette API (visualisation des données, envoi de formulaires, etc..). Mais je ne peux pas autoriser n'importe qui à envoyer un POST ou un DELETE sur mon API, bien evidemment !
Je suis en train de me pencher sur OAuth et sur la librairie :
https://github.com/php-loep/oauth2-server
Mais la, je suis un peu perdu ! J'ai intégré la librairie avec composer, créé une fonction "before" dans silex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 $app->before(function() use($app) { // Initiate the Request handler $request = new OAuth2\Server\Util\Request(); // Initiate a new database connection $db = new OAuth2\Server\Storage\PDO\Db('mysql://.......'); // Initiate the auth server with the models $server = new OAuth2\Server\Resource( new OAuth2\Server\Storage\PDO\Session($db) ); //$grantType = new OAuth2\Server\Grant\ClientCredentials($server); //$server->addGrantType($grantType); $checkToken = checkToken($server); if($checkToken !== true) { return new Response($app->json($checkToken)); } });
J'ai créé un client dans la table "oauth_clients".. Mais comment faire un appel depuis l'appli javascript pour authentifier la requête ? En prime, je ne peux pas mettre de mot de passe / clef secrète dans le javascript, ca n'a rien de sécurisé..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function checkToken($server) { // Test for token existance and validity try { $server->isValid(); } // The access token is missing or invalid... catch (OAuth2\Server\Exception\InvalidAccessTokenException $e) { return $e->getMessage(); } return true; }
Bref, la je suis un peu paumé, et toutes les indications seraient les bienvenues !
D'autant que je trouve énormément de tutorials sur les API et REST.. Mais jamais sur la partie sécurité de l'affaire.. Alors comment on fait ça ?
Merci d'avance !
Partager