使用 npm 包passport-saml在 Azure AD 中使用单点登录流程的应用程序。
在 nodejs express 框架中构建的应用程序。
护照 saml 配置看起来像这个片段:
文件名 - config.js
passport: {
strategy: 'saml',
saml: {
path: process.env.SAML_PATH ,
entryPoint: process.env.SAML_ENTRY_POINT || 'https://login.microsoftonline.com/tenant/saml2',
issuer: 'app id',
cert: process.env.SAML_CERT,
callbackUrl: "https://application_url/login/callback",
logoutUrl: 'https://login.microsoftonline.com/tenant/saml2',
}
}
在上面的配置入口点和 logoutUrl 是相同的。
使用护照 SAML 策略连接 Azure AD 的快速应用程序的代码片段。
文件名 - connect.js:
const SamlStrategy = require('passport-saml').Strategy;
const config = require('./config.js');
app.use(passport.initialize())
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser((user, done) => {
done(null, user);
});
passport.use(new SamlStrategy(config.passport.saml,
function (req, token, refreshToken, profile, done) {
}
))
/*express app router*/
app.get("/login", (req, res, next) => {
passport.authenticate(config.passport.strategy, { failureRedirect: "/" })(req, res, next);
})
app.post('/login/callback', (req, res, next)=> {
/*processing logic after the successful auth from Azure AD SAML*/
})
到目前为止,可以在 Azure AD 中执行 SAML 身份验证并收到登录回调。注意:在 Azure AD 应用程序的重定向 URI 中正确配置了登录回调。
继续,在快速应用路由器上执行注销时遇到问题。
LogoutUrl 在 Azure AD 应用程序设置中配置
每当应用程序遇到 movelogout 路由并且需要注销 Azure 广告会话时。如何使用 passport-saml 策略在此路由内向 Azure AD 发出注销请求?
代码继续文件名:connect.js
app.get('/movelogout', (req, res, next)=> {
//How to issue logout request ?
})
/*Callback for successful logout in Azure AD*/
app.post('/logout', (req, res, next) => {
//Do post logout operation
})
简而言之,我一直在尝试使用 passport-saml完成Azure 单点注销 SAML 协议。具有 SAML 注销请求的链接,它没有以 javascript 方式发出 SAML 请求的解释。
我不太确定配置中的 logoutUrl 和 Azure 设置中的前端注销 URL 之间的关系。
非常感谢任何手动执行 Azure AD 会话注销的建议或解决方案!