2013-06-14 21 views
5

Meteor projemde passport.js'yi kullanmaya çalışıyorum ve kullanıcı bilgilerini pasaportla takıp kaldım.Tümleşik passport.js ve Meteor

İlk önce, kuruluş tarafında LDAP kullanan bir kimlik doğrulama sistemi yapıyorum. Y, Shibboleth'in Kimlik Sağlayıcısı'nı (http://shibboleth.net/products/identity-provider.html) satın aldı ve web uygulamasını barındıran kimlik doğrulama çerçevesi olarak pasaport-saml kullanmak istiyor. Bu git eğitimi, https://github.com/bergie/passport-saml ve resmi passport.js öğreticisini takip ettim ve yöntemleri Meteor'ın sunucu tarafında passport.js'de uyguladım.

Meteor.startup(function() { 
var require = Npm.require; 
    passport = require('passport'); 
    var SamlStrategy = require('passport-saml').Strategy; 

    passport.use(new SamlStrategy(
    { 
     path: '/login/callback', 
     entryPoint: 'https://openidp.feide.no/simplesaml/saml2/idp/SSOService.php', 
     issuer: 'passport-saml' 
    }, 
    function(profile, done) { 
     findByEmail(profile.email, function(err, user) { 
     if (err) { 
      return done(err); 
     } 
     return done(null, user); 
     }); 
    } 
)); 

    Meteor.Router.add('/login/callback', 'POST', function(req, res){ 
    passport.authenticate('saml', { failureRedirect: '/', failureFlash: true }); 
    res.redirect('/'); 
    }); 

    Meteor.Router.add('/login', 'POST', function(req, res){ 
    passport.authenticate('saml', { failureRedirect: '/', failureFlash: true }); 
    res.redirect('/'); 
    }); 

    var app = __meteor_bootstrap__.app; 
    app.use(passport.initialize()); 
    app.use(passport.session()); 

    passport.serializeUser(function(user, done) { 
    done(null, user.id); 
    }); 

    passport.deserializeUser(function(id, done) { 
    User.findById(id, function(err, user) { 
     done(err, user); 
    }); 
    }); 

}); 

Sorum şu ki, kullanıcı bilgilerini göndermek için pasaportumu nasıl alabilirim. Pasport.use işlevinde bir profil nesnesini geçirerek yapılır mı?

Çok teşekkürler ve ne kadar kod göstermem gerektiğinden emin değilim, sadece bir yorum bırakın ve bu yazıyı geliştireceğim!

cevap

1

Meteor, 6.4'te oAuth desteği güncellemesinden önce sorulmuştur ve kullanıcının bunu anladığını varsayalım. Şu anda oAuth + Meteor'ı aradığımız için şimdi daha iyi bir şekilde entegre edildi.

burada blog yazısı bakın passport.js uğraşmak gerek yok: https://www.meteor.com/blog/2013/06/10/meteor-064-new-oauth-packages-and-recommended-updates

Esasen artık bunu yapabilirsiniz:

$ meteor add accounts-twitter 
$ meteor add accounts-facebook 

vb ben sadece serbest

0

Mevcut parola destekli hesaplar için saml tabanlı girişler sağlayan bir meteorit paketi - https://atmosphere.meteor.com/package/accounts-saml adresinden kontrol edin - paket hala bir biraz kaba, çeşitli saml sağlayıcıları

ile çalışmak için bazı ayarlamalar gerekebilir