Archives par mot-clé : proof of concept

[POC] JWT Single Use client server

After some search and some investigating, I don’t have great results of one part of the JWT use cases.

The use case is: the client generates a JWT token by request on the API. Before the client can send the first request, it’s needed to register the client’s public key into the rights manager of API.

After the public-key exchange between the Client and API, the API allow the client’s queries because all JWT tokens are signed with the client’s private key and the API can verify the signature.

For this, I have written a proof of concept available on my GitHub repository.

The branch master contains 2 parts:

  • The WebServer part, written with Silex and handle the JWT with a middleware before the controller.
  • The client part, written in flat PHP who send 3 queries. The first, get the list of objects, the second add an element into list and the third get the list with the new element.

The branch with_guard it’s same branch master but the middleware has been removed and replaced by a Guard Authenticator.

In this case, the client is the user and you can use the role system for check the client’s rights.

Have you some idea or API who can use this case ?

[POC] Oauth

Vous avez tous vu, au moins une fois, sur un site Internet le bouton de “connexion Facebook” ou “connexion Google ».

Mais qu’y a-t-il derrière ? Dans la grande majorité des cas, il y a le protocole Oauth en version 1.0a ou en version 2.

Je ne vais pas faire d’explication de texte sur le protocole car d’autres s’en sont chargés pour moi et je les en remercie.

Par contre, je vais vous donner un lien vers deux dépôts GitHub qui contiennent les parties utiles pour la mise en oeuvre du protocole avec Symfony2.

La partie serveur Oauth (facebook/google/etc…) et serveur de ressource : https://github.com/macintoshplus/OauthServerApp

La partie cliente (le site Internet) : https://github.com/macintoshplus/OauthClientApp

Pour la partie cliente, il est possible de faire le même travail (connexion de l’utilisateur et récupération de ses informations) de deux manières différentes :

1) en obtenant du serveur de ressource les informations sur l’utilisateur et ne rien stocker en local. Pour cela j’utilise le package « hwi/oauth-bundle ». Il sera nécessaire d’interroger le serveur de ressource pour rafraîchir les données de l’utilisateur connecté.

2) en obtenant du serveur de ressource les informations sur l’utilisateur et les sauvegarder localement. Les informations peuvent donc être utilisées pour relier l’utilisateur à ses données sur votre site. Pour stocker localement les données j’ajoute à « hwi/oauth-bundle » le très populaire « friendsofsymfony/user-bundle ».

Quel est votre retour d’expérience Oauth ?