2017-01-23 2 views
0

J'ai essayé de résoudre ce problème pendant plusieurs jours. J'ai suivi le tutoriel dans la documentation d'Auth0.Décoder le jeton ne donne pas le profil de l'utilisateur

Après décodage du jeton express JWT:

export let headerJWTCheck = expressJwt({ 
    secret: '*************************', 
    audience: '******************************' 
}); 

le contenu de req.user n'a pas le profil et les rôles que j'ai besoin des restrictions de rôle dans l'API.

En revanche, le contenu est sous la forme:

{ iss: 'https://******.eu.auth0.com/', 
    sub: 'google-oauth2|***********************', 
    aud: '********************', 
    exp: **************, 
    iat: **************} 

En fin avant que je reçois déjà les informations de profil d'utilisateur j'ai besoin, mais je ne peux pas progresser au-delà.

J'utilise une fonction pour RESTRICTION les rôles:

export function requireRole(role: string) { 
return function (req, res, next) { 
    console.log(req.user); 
    var appMetadata = req.user.profile._json.app_metadata || {}; 
    var roles = appMetadata.roles || []; 

    if (roles.indexOf(role) != -1) { 
     next(); 
    } else { 
     res.redirect('/unauthorized'); 
    } 
} 

mais req.user.profile est toujours définie.

Dans la définition principale de l'application expresse J'ai:

app.use(cookieParser()); 
app.use(session({ 
    ................. 
})); 
configurePassport(); 

app.use(passport.initialize()); 
app.use(passport.session()); 

Répondre

0

La solution est d'ajouter le code suivant la configuration auth0-lock:

auth: { 
    params: { 
     scope: 'openid app_metadata roles' 
    } 
} 

qui ont ajouté les app_metadata et les rôles tableau à req.user après décodage du jeton.

1

La bibliothèque express-jwt est en cours d'initialisation req.user en fonction du contenu du jeton qui a été inclus dans la demande.

Si vous avez besoin d'informations au niveau req.user, vous devez soit include that information directly on the token soit enrichir req.user avant d'exécuter les vérifications de rôle. Par exemple, vous pouvez enrichir req.user en exécutant du code supplémentaire qui obtient les rôles en fonction de la revendication sub (identificateur d'utilisateur).

+0

Merci de m'avoir placé dans la bonne direction. :) –