我已成功将 Passport OpenId Connect ( https://github.com/jaredhanson/passport-openidconnect ) 集成到我的应用程序中
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')))
我必须在身份验证后发送静态内容,但 Express 无法重定向到安全区域。 不幸的是,我的联合提供商无法接受与“http://HOST:PORT/”不同的重定向url,换句话说,重定向必须位于根目录上(callbackURL:“http://MYRETURNURL:5000”)。
如何表达请发送静态内容?
最佳答案
我自己解决了
第1步:安装openid-connect
$ 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;
第三步:配置路由
//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')));
关于node.js - Nodejs + Express + OpenId 连接并重定向到 root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42510617/