我正试图在我的Meteor项目中实施passport.js,我很难通过护照发送用户信息。
首先,我正在构建一个在组织一侧使用LDAP的身份验证系统。你已经购买了Shibboleth的身份提供商http://shibboleth.net/products/identity-provider.html,并希望使用passport-saml作为驻留在网络应用程序中的身份验证框架。我已经关注了这个git教程https://github.com/bergie/passport-saml,以及官方的passport.js教程,我已经在Meteor服务器端的passport.js中实现了这些方法。
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);
});
});
});
我现在的问题是如何获得护照以发送用户信息。是通过passport.use?
中的函数传递一个配置文件对象来完成的非常感谢,我不确定我应该展示多少代码,请给我发表评论,我会改进这篇文章!
答案 0 :(得分:1)
在Meteor更新了对6.4中oAuth的支持之前,我们已经问过这个问题,我认为用户已经想到了这一点。对于我们这些寻找oAuth + Meteor的人来说,它现在已经更好地集成了。
无需乱用passport.js
请在此处查看博文:https://www.meteor.com/blog/2013/06/10/meteor-064-new-oauth-packages-and-recommended-updates
基本上你现在可以这样做:
$ meteor add accounts-twitter
$ meteor add accounts-facebook
等
答案 1 :(得分:0)
我刚刚发布了一个陨石包,允许基于saml的登录现有密码支持帐户 - 在https://atmosphere.meteor.com/package/accounts-saml查看 - 包仍然有点粗糙,因此可能需要一些调整才能与各种saml提供商一起工作< / p>