尝试将用户从idp会话中注销时,收到400错误请求。用户已从应用程序/passport会话中注销,但未从idp会话中注销。
注销和回调端点的设置如下所示。注销端点附加所需的属性以注销用户和创建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);
});config的设置如下:
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,
);任何对解决问题的帮助都是非常感谢的。
发布于 2020-06-27 15:31:22
是,idp会话不清楚,因为您尚未使用SAML协议注销。未使用req.logout清除Idp处的会话。只有您的应用程序会话可以使用此选项清除。
你能做的是
samlStrategy.logout(req, function(err, request){
if(!err){
//redirect to the IdP Logout URL
res.redirect(request);
}
});这将重定向到idp注销页面,并且您应该给idp一个注销回调url。注销成功后,Idp将重定向到回调url。
https://stackoverflow.com/questions/56291385
复制相似问题