IREX - OAuth2 Proxy : la clé pour connecter Keycloak aux services non authentifiés
Pour intégrer Keycloak avec des services dépourvus de mécanisme d’authentification, un proxy est nécessaire afin de gérer les jetons. Dans cet article, nous mettons l’accent sur le rôle du proxy OAuth
- Qu'est-ce que le proxy OAuth2 ?
- Fonctionnalités principales
- Flux d'authentification typique
- Configuration de base
- Cas d'utilisation
- Applications sans mécanisme d'authentification intégré : Le proxy OAuth2 peut sécuriser des applications qui ne supportent pas nativement OAuth2 ou OIDC.
- Microservices : Dans une architecture de microservices, le proxy OAuth2 peut agir en tant que point d'entrée unique, centralisant l'authentification.
- Environnements Kubernetes : Il peut être déployé en tant que service dans un cluster Kubernetes pour sécuriser l'accès aux applications internes.
- Cas particulier de Langflow
- Conclusion
- Voir aussi :
Le proxy OAuth2 est un serveur proxy inverse qui intercepte les requêtes HTTP entrantes, redirige les utilisateurs vers un fournisseur d'identité (IdP) pour l'authentification, puis transmet les requêtes authentifiées aux applications en aval. Il agit comme une passerelle d'authentification, permettant d'ajouter une couche de sécurité sans modifier les applications elles-mêmes.
Le proxy OAuth2, un composant essentiel pour sécuriser l'accès aux applications web sans nécessiter de modifications internes du code source.
Ses fonctionnalités sont les suivantes :
+ Authentification déléguée: Le proxy OAuth2 délègue l'authentification à des fournisseurs d'identité tels que Google, GitHub, Keycloak, etc.
+ Support de multiples fournisseurs: Il peut être configuré pour travailler avec plusieurs IdP simultanément.
+ Gestion des sessions: Il gère les sessions utilisateur via des cookies sécurisés, permettant une authentification persistante.
+ Transmission d'informations d'identité: Il peut transmettre des informations sur l'utilisateur (comme l'email ou les groupes) aux applications en aval via des en-têtes HTTP.
+ Support de SSO (Single Sign-On) : Permet aux utilisateurs de se connecter une seule fois et d'accéder à plusieurs applications sans se réauthentifier.
+Accès initial : L'utilisateur tente d'accéder à une ressource protégée.
+Redirection vers l'IdP : Si l'utilisateur n'est pas authentifié, le proxy OAuth2 le redirige vers le fournisseur d'identité configuré.
+Authentification : L'utilisateur s'authentifie auprès de l'IdP.
+Retour au proxy : L'IdP redirige l'utilisateur vers le proxy OAuth2 avec un code d'autorisation.
+Échange du code : Le proxy échange le code d'autorisation contre un jeton d'accès.
+Accès à l'application : Le proxy transmet la requête à l'application en aval avec le jeton d'accès, permettant l'accès à la ressource protégée.
NB : Idp c’est le service qui gère l’authentification des utilisateurs et qui émet les jetons d’accès (tokens) permettant aux applications de savoir qui est connecté. Dans notre cas se sera Keycloak.
Un exemple de configuration minimale pour un proxy OAuth2 utilisant un fournisseur OIDC :
provider = "oidc" oidc_issuer_url = "https://<idp-url>/realms/<realm>" client_id = "<client-id>" client_secret = "<client-secret>" redirect_url = "https://<proxy-url>/oauth2/callback" cookie_secret = "<cookie-secret>" cookie_secure = true cookie_domains = ["<domain>"] set_xauthrequest = true pass_access_token = true pass_authorization_header = true
On observe de nombreux cas d'utilisations tels que :
Dans un environnement où plusieurs services doivent être sécurisés, la communication entre les différentes briques d’authentification est essentielle. Cette esquisse met en lumière le rôle de Keycloak, en tant que fournisseur d’identité (IdP), du proxy OAuth2, qui agit comme intermédiaire chargé de vérifier et transmettre les jetons d’accès, et de Langflow, l’application finale que l’utilisateur souhaite atteindre. Ensemble, ces trois services assurent une chaîne fluide et sécurisée d’authentification et d’accès.
Le proxy OAuth2 s’impose comme un maillon central dans l’intégration d’un fournisseur d’identité tel que Keycloak avec des applications comme Langflow. En gérant la validation et la transmission des jetons, il décharge les services en aval de la complexité de l’authentification. Cette séparation des rôles permet d’apporter une couche de sécurité uniforme, sans modifier les applications existantes, tout en assurant une expérience utilisateur fluide et cohérente.
DASSI MANDJO Léa Justine
Stagiaire à IREX.
No comments yet. Start a new discussion.