首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用passport-saml注销Idp会话

使用passport-saml注销Idp会话
EN

Stack Overflow用户
提问于 2019-05-24 19:06:16
回答 1查看 800关注 0票数 2

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

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

代码语言:javascript
复制
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的设置如下:

代码语言:javascript
复制
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,
);

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

EN

回答 1

Stack Overflow用户

发布于 2020-06-27 15:31:22

是,idp会话不清楚,因为您尚未使用SAML协议注销。未使用req.logout清除Idp处的会话。只有您的应用程序会话可以使用此选项清除。

你能做的是

代码语言:javascript
复制
      samlStrategy.logout(req, function(err, request){
          if(!err){
           //redirect to the IdP Logout URL
           res.redirect(request);
         }
      });

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56291385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档