pra*_*ani 5 node.js saml-2.0 passport.js
我们已经实施了SAML SSO,我们也使用了passport-saml.登录完全使用"http-post"作为authnRequestBinding.But我无法找到任何这样的注销方法.它显示注销默认为http重定向,这不能正常工作.
首先,您需要在 Passport-saml 的配置中定义logoutUrl和logoutCallback 。logoutUrl 是您的服务器将发送 logoutRequest 的 url。所以它是从您正在使用的身份提供商处获取的 URL。logoutCallback 顾名思义,是注销完成后浏览器(通过重定向)调用的callbackUrl。添加这些配置的方法如下:
module.exports = {
development: {
app: {
name: 'Passport SAML strategy example',
port: process.env.PORT || 8443
},
passport: {
strategy: 'saml',
saml: {
logoutUrl: 'idp-logout-url-here',
logoutCallback: 'your-logout-callback-url-here'
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
然后,您需要在代码中的某个位置放置SamlStrategy,您将在其中使用上面定义的配置。当然配置也会有其他变量,我现在只是把注销相关的变量放在那里。
最后,您需要在节点应用程序中定义自己的注销路由,该路由将在调用时启动注销过程:
app.get('/logout', function(req, res) {
if (req.user == null) {
return res.redirect('/');
}
return SamlStrategy.logout(req, function(err, uri) {
return res.redirect(uri);
});
});
Run Code Online (Sandbox Code Playgroud)
从上面可以看到,它会调用SamlStrategy中定义的logout函数。所以passport-saml策略中定义了一个注销函数。如上所述,您需要给它一个回调函数,该函数会将响应重定向到 uri。该uri将是您之前定义的 logoutCallback url。
如果你想知道那里的 SamlStrategy 是什么,它实际上是 Passport-saml 的策略。我可以向您展示如何让它发挥作用。例如,在一个名为“saml-strategy.js”的单独文件中,输入以下内容:
const SamlStrategy = require('passport-saml').Strategy;
var config = require('./config.js')['development'];
module.exports = new SamlStrategy(
{
otherImportantvariable1: config.passport.saml.OtherImportantvariable1,
logoutUrl: config.passport.saml.logoutUrl,
logoutCallback: config.passport.saml.logoutCallback
}
function (profile, done) {
user = Object.assign({}, profile);
return done(null, user);
}
);
Run Code Online (Sandbox Code Playgroud)
以与上面定义的注销相关变量相同的方式插入所有重要的配置变量。包括在第一步中创建的配置。
然后,您只需将 SamlStrategy 要求到您拥有路线的同一文件中即可:
const SamlStrategy = require('../config/saml-strategy');
Run Code Online (Sandbox Code Playgroud)
有什么不清楚的请追问!
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |