Encore un noob!Passeport-SAML: lire les informations sur l'utilisateur
Je travaille à construire une application Node, et je l'ai déjà configurer divers points finaux nécessaires. L'une des exigences de mon projet est d'utiliser l'authentification en utilisant le mécanisme SAML. J'utilise le passeport-SAML pour l'authentification dans ma demande.
Jusqu'à présent, j'ai pu configurer et utiliser la stratégie SAML, et ma demande est en mesure d'appeler le point d'entrée idp, et recevoir la réponse de retour de déplacés internes.
Je n'arrive pas à comprendre comment accéder aux informations utilisateur renvoyées par idp, afin que je puisse utiliser les informations utilisateur SAML retournées pour créer et gérer des sessions.
const saml = require('passport-saml');
module.exports = function (passport, config) {
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (user, done) {
done(null, user);
});
var samlStrategyOptions = new saml.Strategy(
{
// URL that goes from the Identity Provider -> Service Provider
callbackUrl: config.passport.saml.callback_url,
// path: config.passport.saml.path,
// URL that goes from the Service Provider -> Identity Provider
entryPoint: config.passport.saml.entryPoint,
issuer: config.passport.saml.issuer,
identifierFormat: null,
// Service Provider private key
decryptionPvk: config.passport.saml.decryptionPvk,
// Service Provider Certificate
privateCert: config.passport.saml.privateCert,
// Identity Provider's public key
cert: config.passport.saml.cert,
validateInResponseTo: false,
disableRequestedAuthnContext: true
},
function (profile, done) {
return done(null,
{
id: profile.uid,
email: profile.email,
displayName: profile.cn,
firstName: profile.givenName,
lastName: profile.sn
});
})
// module.exports.samlStrategyOptions = samlStrategyOptions ;
passport.use(samlStrategyOptions);
};
Voici mes contrôleurs de route pour express
router.route('/login')
.get(
passport.authenticate(config.passport.strategy,
{
successRedirect: '/',
failureRedirect: '/login'
})
);
router.route('/login/callback/')
.post(
passport.authenticate(config.passport.strategy,
{
failureRedirect: '/',
failureFlash: true
}),
function (req, res) {
res.redirect('/');
}
);
Et ceci est un extrait de SAML des propriétés que je reçois en réponse de Idp.
<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">Shubham123</saml:NameID>