首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >passport-saml openidp登录“无法打开流”

passport-saml openidp登录“无法打开流”
EN

Stack Overflow用户
提问于 2015-12-03 06:14:47
回答 1查看 283关注 0票数 0

首先,我要声明我是SAML和Passport新手。我正尝试在我的node.js应用程序中使用passport-saml进行SAML身份验证,但尝试通过OpenIdP登录时出现故障(我的OpenIdP用户配置与"passport-saml-example“应用程序一起工作正常)。我的应用程序通过passport.authenticate登录到OpenIdP失败,出现以下错误:

代码语言:javascript
复制
Exception: Error downloading metadata from "http://192.168.1.11:9050": file_get_contents(http://192.168.1.11:9050): failed to open stream: Connection timed out
Backtrace:
4 /www/openidp.feide.no/simplesamlphp/lib/SimpleSAML/Metadata/MetaDataStorageHandlerDynamicXML.php:235   (SimpleSAML_Metadata_MetaDataStorageHandlerDynamicXML::getMetaData)
3 /www/openidp.feide.no/simplesamlphp/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php:274 (SimpleSAML_Metadata_MetaDataStorageHandler::getMetaData)
2 /www/openidp.feide.no/simplesamlphp/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php:310 (SimpleSAML_Metadata_MetaDataStorageHandler::getMetaDataConfig)
1 /www/openidp.feide.no/simplesamlphp/modules/saml/lib/IdP/SAML2.php:296 (sspmod_saml_IdP_SAML2::receiveAuthnRequest)
0 /www/openidp.feide.no/simplesamlphp/www/saml2/idp/SSOService.php:19 (N/A)

我的passport-saml配置如下:

代码语言:javascript
复制
    passport    :   {
        strategy    :   'saml',
        saml : {
            entryPoint  :   'https://openidp.feide.no/simplesaml/saml2/idp/SSOService.php',
            issuer      :   'http://192.168.1.11:9050',
            callbackUrl :   'http://192.168.1.11:9050/login/callback'
        }
    },

我的登录路由配置如下:

代码语言:javascript
复制
//  "login" route

app.get("/login",
    passport.authenticate(config.passport.strategy, {
        successRedirect : "/",
        failureRedirect : "/login"
    })
    );

//  "login/callback" route

app.post('/login/callback', function (req, res) {
    passport.authenticate(config.passport.strategy,
        {
            failureRedirect: '/',
            failureFlash: true
        });
    res.redirect('/');
});

下面是passport中间件的设置:

代码语言:javascript
复制
passport.serializeUser(function (user, done) {
    db.collection('users').find({email: user.email}).toArray(function (err, result) {
        console.log("Passport serialize user: " + user);
        if (result.length === 0) {
            //  User is not in the database, add the user.
            var insertData = [{email: user.email, firstName: user.givenName, lastName: user.sn}];
            db.collection('users').insert(insertData, function (err, result) {
                done(null, insertData);
            });
        } else {
            //  User is already in the database, just return their data
            done(null, result);
        }
    });
});

passport.deserializeUser(function (user, done) {
    console.log("Passport de-serialize user: " + user);
    db.collection('users').find({email: user.email}).toArray(function (err, result) {
        console.log("Passport de-serialize result: " + result);
        done(null, user);
    });
});

passport.use(new SamlStrategy(
    {
        path        :   config.passport.saml.callbackUrl,
        entryPoint  :   config.passport.saml.entryPoint,
        issuer      :   config.passport.saml.issuer
    },
    function (profile, done) {
        console.log("Returning SAML authentication: " + profile);
        return done(null,
            {
                id          :   profile.uid,
                email       :   profile.email,
                displayName :   profile.cn,
                firstName   :   profile.givenName,
                lastName    :   profile.sn
            });
    }
));

我相信这与我见过的passport-saml-example配置非常相似;你知道我在这个配置中遗漏了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2015-12-04 23:25:49

问题是由于IDP上的SP注册出现问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34054149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档