La parole est aux speakers : Karim Pinchon

Publié le

Jusqu’au Forum PHP 2020, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Introduction à OpenID Connect

"T'as besoin d'une application pour authentifier tes utilisateurs ? Un serveur OAuth2 c'est ce qu'il te faut !"

C'est faux. Trop souvent le protocole OAuth2 est utilisé à tord pour authentifier des utilisateurs. Ce n'est pas fait pour ça. En revanche, un protocole relativement semblable existe dans ce but : OpenID Connect.

Je vous propose de vous expliquer comment fonctionne le protocole OpenID Connect et en quoi il est différent d'OAuth2, pour ne plus se tromper d'usage.

Katherine Johnson
22/10/2020
12:10-12:30

Tu as l’habitude de donner des cours de niveau Master. À ce niveau-là, comment prépare-t-on ses cours ? Quelles sont les différences avec la préparation d’un conférence ?

En effet, depuis quelques années je dispense un cours sur les Web Services d’une dizaine d’heures en M1. À ce niveau-là, j’essaie de proposer un cours en étant très précis sur certains concepts, mais je ne cherche pas à être exhaustif et à aborder tous les sujets. Il y a quelques années je donnais des cours en L1/L2 sur les bases du web, HTML, CSS, JS, PHP et là mon approche était différente : j’essayais d’aborder beaucoup de sujets sans forcément les « creuser » au maximum. L’idée étant qu’en L1/L2 on est sur de la découverte alors qu’en Master je considère qu’on doit commencer à avoir une certaine maîtrise des sujets. Un exemple : REST est encore en 2020 un style d’architecture très mal compris, et je pense que c’est en partie dû à des enseignements qui ne sont pas assez précis, qui ne vont pas au bout des choses.
Concernant les différences entre la préparation d’un cours et d’une conférence je dirais que ça dépend :). J’ai déjà fait des présentations assez proches d’un cours magistral lorsque je voulais faire découvrir un nouvel outil par exemple. Dans ce cas, on essaie de passer en revue les fonctionnalités de l’outil, et on a quelque chose d’assez linéaire. Pas forcément très fun mais ça peut être très bien quand même. Sur d’autres types de sujets, on sait qu’on ne pourra pas parler de tout alors on n’aborde qu’une petite partie du sujet mais en choisissant un axe particulier. Et puis, pour un talk il y a des contraintes bien différentes. L’une d’elles est que l’on a très peu de temps. Réussir à proposer quelque chose d’intéressant en 10, 20 ou 40 minutes ce n’est pas simple, lors d’un cours, on a plusieurs heures, on peut se permettre des digressions ou des anecdotes pour essayer d’accrocher les étudiants.

Les devs confondent souvent authentification et autorisation. À ton avis, à quoi cela est dû ?

Tout à fait d’accord ! Je pense qu’il y a plusieurs facteurs qui expliquent ça. Un des éléments de réponse est que la sécurité n’est pas souvent abordée dans les cursus de développeurs·euses (en tout cas pas à mon époque et pas dans les filières où je suis passé). Généralement, la « sécurité » dans un cursus de dev c’est un formulaire username/password, une session et terminé… Du coup, puisque la sécurité n’est pas un sujet à part entière, des concepts tels que l’identification, l’authentification, l’autorisation ne sont jamais réellement expliqués.
Je serais tenté de dire qu’en entreprise c’est parfois un peu la même chose :(. Ce n’est pas le cas partout bien évidemment, mais pour certaines personnes l’authentification des utilisateurs n’est pas une fonctionnalité au même titre qu’une fonctionnalité « métier ». On y accorde moins d’attention, moins de temps, etc … « C’est bon, c’est pas compliqué ! » Bien sûr que si ! Ce n’est pas simple du tout et c’est surtout un enjeu crucial. Surtout aujourd’hui où nos architectures logicielles sont tellement complexes avec des micro-services dans tous les sens, des interconnexions entre partenaires, des SPA, des apps natives, etc.
Peut-on dire que les devs qui confondent authentification et autorisation sont des amateurs ? Je n’irai pas jusque là ! 😉

Y a-t-il des différences significatives dans la façon de traiter les problématiques d’authentification en Java ? Quel que soit le langage, cela a-t-il évolué depuis 10 ans ?

Je ne crois pas qu’il y ait beaucoup de différences. Les concepts restent les mêmes. Évidemment l’outillage diffère. Je pense que les frameworks Java avaient de l’avance il y a quelques années sur la façon de gérer ça, mais avec les progrès des framework PHP, je suis moins sûr que ce soit le cas aujourd’hui (bon je n’ai plus fait de Java depuis Java 8…).
Clairement depuis 10 ans les évolutions autour de ces problématiques ont été énormes, en grande partie parce que, comme je l’ai dit plus haut, les archi ont évolué : les SPA, les apps mobiles, des design « api first » entre autres. Il y a 10 ans on avait le choix entre des solutions home made pas toujours très heureuses, et des solutions éprouvées, solides, mais hyper lourdes. Aujourd’hui on a pléthore de solutions qui permettent d’adresser tous les besoins, des serveurs SSO type Keycloak, de l’authentification « as a service » type Auth0, des standards ont émergé comme JWT et… OpenId Connect 😉

Une conférence présentée par

Karim PINCHON
Karim PINCHON
Développeur PHP (mais aussi Java), Karim est spécialisé en développement d'API. Le partage de connaissance est pour lui fondamental dans l'approche de son métier : il participe en tant que spectateur à des conférences de développeurs autant que possible, et il est speaker dans des meetings locaux. Il donne depuis quelques années des cours de Web services (SOAP et REST) à des étudiants de Master. Il a une sensibilité particulière sur les sujets de sécurité, d'authentification (OAuth2, OpenIdConnect) et de signature électronique (PKI), puisque ce sont des sujets sur lesquels il travaille depuis près de 10 ans.

Autres interviews