2017-02-28 217 views
1

我在我的应用程序集成的护照ID连接(https://github.com/jaredhanson/passport-openidconnect)成功的NodeJS +快递+ OpenID支持重定向连接到根

passport.use('provider', new OICStrategy({ 
    issuer: "https://fssfed.stage.ge.com/fss", 
    authorizationURL : "https://MYFEDERATIONURL/authorization.oauth2", 
    tokenURL : "https://MYFEDERATIONURL/token.oauth2", 
    userInfoURL : "https://MYFEDERATIONURL/userinfo.openid", 
    callbackURL : "http://MYRETURNURL:5000", 
    clientID: "MYSECRET", 
    clientSecret: "MYPASSWORD" 

    }, 
    function(accessToken, refreshToken, profile, done) { 
    console.log(accessToken); 
    console.log(refreshToken); 
    console.log("profile:") 
    console.log(profile); 
    console.log(done); 

    return done(null, profile); 
    } 
)); 

app.use('/', function(req, res, next) { 
    console.log(req.url + " " + req.isAuthenticated()); 
    if (req.isAuthenticated()) { 
/*** HOW TO REDIRECT TO****/ 
     } else { 
      next(); 
     } 
    },passport.authenticate('provider')); 


app.use('/secure',express.static(path.join(__dirname, process.env['base-dir'] ? process.env['base-dir'] : '../public'))) 

我发送认证后的静态内容,但快递不能重定向到安全区域。 不幸的是,我的联邦提供商无法接受与“http://HOST:PORT/”不同的重定向网址,换句话说,重定向网址位于根目录(callbackURL:“http://MYRETURNURL:5000”)。

如何表示请发送静态内容?

回答

1

解决了自己

第一步:安装OpenID的连接

$ npm install passport-openidconnect --save 

第二步:在app.js

passport.use('provider', new OICStrategy({ 
    issuer: "https://fssfed.stage.ge.com/fss", 
    authorizationURL : "https://MYFEDERATIONURL/authorization.oauth2", 
    tokenURL : "https://MYFEDERATIONURL/token.oauth2", 
    userInfoURL : "https://MYFEDERATIONURL/userinfo.openid", 
    callbackURL : "http://MYRETURNURL:5000", 
    clientID: "MYSECRET", 
    clientSecret: "MYPASSWORD" 

    }, 
    function(accessToken, refreshToken, profile, done) { 

    return done(null, profile); 
    } 
)); 
var OICStrategy = require('passport-openidconnect').Strategy; 

第三步配置startegy

:路由配置

//logout route 
    app.get('/login',passport.authenticate('provider', {noredirect: false})); 
    app.get('/authorize',passport.authenticate('provider', {noredirect: false}), 
    function (req, res, next) { 
     res.redirect('/'); 
    }); 


    app.use('/', 
    function(req, res, next) { 
     console.log(req.url + " " + req.isAuthenticated()); 
     if (req.isAuthenticated()) { 
       next(); 
      } else { 
       res.redirect('/login'); 
      } 
     }, 
    express.static(path.join(__dirname, process.env['base-dir'] ? process.env['base-dir'] : '../public'))); 
+0

很好..完成 – Stefano