Comment utiliser Keycloak avec React
Keycloak est une solution open-source de gestion des identités et des accès qui fournit des fonctionnalités telles que l’authentification unique (SSO) et l’autorisation OAuth2. Dans ce guide, nous expliquerons comment intégrer Keycloak avec une application React.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
- Keycloak installé et configuré sur un serveur.
- Un environnement de développement React configuré sur votre machine.
Installer l’adaptateur JavaScript Keycloak
Pour utiliser Keycloak avec React, nous devons installer l’adaptateur JavaScript Keycloak. Ouvrez votre terminal et naviguez vers le répertoire de votre projet React. Exécutez la commande suivante pour installer l’adaptateur :
npm install keycloak-jsCréer une configuration Keycloak
Dans votre projet React, créez un nouveau fichier appelé keycloak.js. Ce fichier contiendra les paramètres de configuration de Keycloak. Ajoutez le code suivant au fichier keycloak.js :
import Keycloak from 'keycloak-js'
const keycloakConfig = { url: 'https://your-keycloak-server/auth', realm: 'your-realm', clientId: 'your-client-id',}
const keycloak = new Keycloak(keycloakConfig)
export default keycloakVeillez à remplacer https://your-keycloak-server/auth, your-realm et your-client-id par les valeurs appropriées pour votre configuration Keycloak.
Initialiser Keycloak dans votre application React
Dans le fichier d’entrée de votre application React (par exemple, index.js), importez l’objet keycloak depuis le fichier keycloak.js et initialisez-le avant de rendre l’application. Ajoutez le code suivant à votre fichier d’entrée :
import React from 'react'import ReactDOM from 'react-dom'import keycloak from './keycloak'
keycloak.init({ onLoad: 'login-required' }).then((authenticated) => { if (authenticated) { ReactDOM.render(<App />, document.getElementById('root')) }})Sécuriser les routes avec Keycloak
Pour sécuriser des routes spécifiques dans votre application React, vous pouvez créer un composant d’ordre supérieur (HOC) qui enveloppe les composants protégés. Créez un nouveau fichier appelé SecureRoute.js et ajoutez le code suivant :
import React from 'react'import { Route, Redirect } from 'react-router-dom'import keycloak from './keycloak'
const SecureRoute = ({ component: Component, ...rest }) => ( <Route {...rest} render={(props) => keycloak.authenticated ? ( <Component {...props} /> ) : ( <Redirect to="/login" /> ) } />)
export default SecureRouteCe composant SecureRoute vérifie si l’utilisateur est authentifié en utilisant keycloak.authenticated. S’il est authentifié, il affiche le composant protégé ; sinon, il redirige vers la page de connexion.
Utiliser les routes sécurisées dans votre application
Vous pouvez maintenant utiliser le composant SecureRoute pour sécuriser des routes spécifiques dans votre application. Par exemple :
import React from 'react'import { BrowserRouter as Router, Switch } from 'react-router-dom'import SecureRoute from './SecureRoute'import HomePage from './HomePage'import DashboardPage from './DashboardPage'
const App = () => ( <Router> <Switch> <SecureRoute exact path="/" component={HomePage} /> <SecureRoute path="/dashboard" component={DashboardPage} /> </Switch> </Router>)
export default AppDans cet exemple, la page d’accueil (/) et la page du tableau de bord (/dashboard) sont des routes sécurisées accessibles uniquement aux utilisateurs authentifiés.
En suivant ces étapes, vous pouvez intégrer Keycloak avec votre application React et sécuriser des routes spécifiques. Keycloak fournit une solution puissante et sécurisée pour gérer l’authentification et l’autorisation des utilisateurs dans vos projets React.