gpt4 book ai didi

javascript - 使用 passport-saml 注销 Idp session

转载 作者:行者123 更新时间:2023-12-05 06:26:17 24 4
gpt4 key购买 nike

尝试从 idp session 中注销用户时收到 400 错误请求。用户已从应用程序/Passport session 中注销,但未从 idp session 中注销。

注销和回调端点的设置如下所示。注销端点附加所需的属性以注销用户并创建 SAMLRequest。

app.get('/api/logout', (req, res) => {
const currentUser = getCurrentUser(req);
const user = {
nameID: currentUser.nameID,
nameIDFormat: currentUser.nameIDFormat,
sessionIndex: currentUser.sessionIndex,
};
req.user = user;

return strategy.logout(req, function(err, uri) {
res.redirect(uri);
});
});

app.post('/api/logout/callback', (req, res) => {
req.logout();
// res.redirect(uri);
});

配置是这样设置的:

const strategy = new SamlStrategy(
{
callbackUrl: process.env.CALLBACK_URL,
entryPoint: process.env.ENTRY_POINT,
issuer: process.env.ISSUER,
logoutUrl: process.env.LOGOUT_URL,
logoutCallbackUrl: process.env.LOGOUT_CALLBACK_URL,
},
strategyCallback,
);

非常感谢任何解决问题的帮助。

最佳答案

是的 idp session 不清楚,因为您尚未使用 SAML 协议(protocol)注销。使用 req.logout 不会清除 Idp 的 session 。只有您的应用程序 session 才能被清除。

你能做的是

      samlStrategy.logout(req, function(err, request){
if(!err){
//redirect to the IdP Logout URL
res.redirect(request);
}
});

这将重定向到 idp 注销页面,你应该给 idp 一个注销回调 url。成功注销后,Idp 将重定向到回调 url。

关于javascript - 使用 passport-saml 注销 Idp session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56291385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com