SSO nodeJs Azure AD



我正在尝试使用nodeJS使用azure AD设置SSO(SAML(。与我合作的公司向我提供了一些信息。他们基本上想在那里的内部网站上托管我的网站,并让它使用那里的数据库对那里的用户进行身份验证。我收到了一些信息(tenantID、用户访问URL、应用程序ID和对象ID以及元数据文件(,但我在网上找不到任何有用的信息,这是我第一次尝试这样做。如果有人能帮忙,请告诉我!提前感谢!我的代码如下:(

var SamlStrategy = require('passport-saml').Strategy;
passport.use(new SamlStrategy(
{
path: '/login/callback',
entryPoint: 'https://myapps.microsoft.com/signin/SAML-companyname-DEV/id?tenantId=id
issuer: 'issuer'
},

function(profile, done) {
findByEmail(profile.email, function(err, user) {
if (err) {
return done(err);
}
return done(null, user);

});
})
);
app.post('/login/callback',
function(req, res) {
console.log('inside /login/callback')
//after login, goes here, but renders back to login/callback. then back here.
res.render('login.ejs')
}
);
app.get('/login',
passport.authenticate('saml', { failureRedirect: '/failed-login.ejs', failureFlash: true }),
function(req, res) {
console.log("inside azuread /login passport saml")
res.render('index.ejs')
}
);

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(session(
{
resave: true,
saveUninitialized: true,
secret: 'test secret'
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static(path.join(__dirname, 'views')));

// 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.send(err.status)
});

文档是关键-https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-nodejs-webapp

此外,这取决于网站的托管位置,如果它是Azure应用程序服务,则很容易实现SSO(或者(如果它是其他IIS服务器[在Prem上],则需要进行一些配置更改/应用程序代码更改。

最新更新