Ou apparaissent les roles dans les tokens ?
Par defaut, les roles sont inclus dans l'access token JWT :
# Decoder le payload d'un access token (base64)
echo $ACCESS_TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | jq .
# Exemple de payload
{
"realm_access": {
"roles": ["admin", "user"]
},
"resource_access": {
"mon-backend": {
"roles": ["read", "write"]
}
}
}
Attribuer des roles via les groupes
Au lieu d'attribuer des roles individuellement, vous pouvez les attribuer a un groupe :
- Allez dans Groups > selectionnez un groupe
- Onglet Role mapping
- Cliquez Assign role et selectionnez les roles
- Tous les membres du groupe heritent de ces roles
Default Roles
Vous pouvez definir des roles attribues par defaut a tout nouvel utilisateur :
- Allez dans Realm Settings > User Registration
- Configurez les Default Roles
Verifier les roles cote application
# Exemple en Node.js avec un middleware
function requireRole(role) {
return (req, res, next) => {
const token = req.headers.authorization?.split(" ")[1];
const decoded = jwt.decode(token);
const roles = decoded.realm_access?.roles || [];
if (!roles.includes(role)) {
return res.status(403).json({ error: "Acces refuse" });
}
next();
};
}
// Utilisation
app.get("/admin", requireRole("admin"), (req, res) => {
res.json({ message: "Bienvenue admin" });
});
Bonne pratique : Utilisez les groupes pour gerer les roles plutot que de les attribuer individuellement. Cela facilite la gestion a grande echelle.