注销Azure Passport身份验证节点js

用户名

我有一个节点js应用程序,我们在其中使用了带有护照身份验证的Azure登录。

我已经成功使用azure登录,并且该应用程序运行正常。

但是,当我注销并为页面提供url时-它会检查身份验证,并自动转到该页面而不要求登录。

登录后,URL包含以下查询字符串1. session_state 2. code 3. state 4. token

登录代码:

app.get('/login', passport.authenticate('azuread-openidconnect', { failureRedirect: '/' }), function (req, res) {
res.sendFile(path.join(__dirname+'/index.html'));

});

注销代码:

app.get('/logout', function (req, res) {
    req.session.destroy();
    req.logout();
    res.redirect('/');
});

当我注销时,页面重定向到我的索引页面。然后,当我在网址中输入“ / login”时,它将带我进入该页面,而无需登录页面

请帮助摆脱这个...

加里·刘-MSFT

此问题是由OAuth 2.0的授权代码授予流程引起的。诸如此类,Azure AD OAuth 2.0服务上有任何会话。这不是passportjs的问题expressjs

我们可以进行以下简单测试,在浏览器中访问身份验证端点, https://login.microsoftonline.com/common/oauth2/authorize?response_type=id_token%20code&client_id=<client_id>&redirect_uri=<redirect_uri>&response_mode=query&scope=openid

您将需要首先填写电子邮件和密码,完成登录流程后,第二次访问端点时,您将不再需要填写电子邮件或密码。

我们可以在授权端点中将url参数设置promptlogin,以强制用户每次重新进行身份验证。

您可以参考https://msdn.microsoft.com/en-us/library/azure/dn645542.aspx#code-snippet-3了解详细信息。

但是在天青的护照设计中,我们应该修改源代码以将参数添加到端点中。

安装passport-azure-ad模块/node_modules/passport-azure-ad/lib/passport-azure-ad/oidcstrategy.js,在第545行(或多或少)打开文件,您可以找到以下代码片段:

      var params = {};
      if (self.authorizationParams) { params = self.authorizationParams(options); }
      params['response_type'] = config.responseType;
      log.info('We are sending the response_type: ', params['response_type']);
      params['client_id'] = config.clientID;
      params['redirect_uri'] = callbackURL;
      ...

我们可以params['prompt'] = 'login';在代码段后添加句子以添加支持。

如有任何其他疑问,请随时告诉我。

编辑

有什么方法只能在我注销时提示登录...

我不确定您的意思是,您要检查用户访问login路由时是否经过身份验证,如果是,是否不提示登录流程?

如果是这样,您可以自定义中间件以检查已通过身份验证。例如:

function checkAuthenticatedOnLogin(req,res,next){
  if (!req.isAuthenticated()) { 
    return next(); 
  }else{
    res.send('do not need login');
  }
}

app.get('/login',checkAuthenticatedOnLogin,
  passport.authenticate('azuread-openidconnect',{ failureRedirect: '/login' }),
  function(req, res) {
    log.info('Login was called in the Sample');
    res.redirect('/');
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.NET表单身份验证在超时之前注销用户

来自分类Dev

使用节点sdk向Azure进行身份验证时出错:

来自分类Dev

Web API 2,OWIN身份验证,注销未注销

来自分类Dev

Passport.js可选身份验证

来自分类Dev

我想注销或撤消javascript中的Linkedin身份验证

来自分类Dev

如何从iOS ADAL身份验证注销?

来自分类Dev

针对Azure AD的WebForms身份验证

来自分类Dev

OpenAM身份验证-注销

来自分类Dev

Laravel JWT-auth身份验证的注销问题

来自分类Dev

Laravel 5.1身份验证刷新后注销

来自分类Dev

Azure Git身份验证失败

来自分类Dev

注销Azure Passport身份验证节点js

来自分类Dev

Azure Apps JWT身份验证

来自分类Dev

注销时Firebase Facebook按钮android身份验证

来自分类Dev

替代基本身份验证注销时需要?

来自分类Dev

多个Blazor Server应用程序和Azure身份验证注销问题

来自分类Dev

React中的msal.js-Azure身份验证

来自分类Dev

Flutter Firebase身份验证注销活动

来自分类Dev

CakePHP身份验证(登录/注销)不起作用

来自分类Dev

表单身份验证-以编程方式注销用户

来自分类Dev

如何正确注销表单身份验证

来自分类Dev

使用Node.js的Windows Azure Pack身份验证

来自分类Dev

防止注销身份验证laravel

来自分类Dev

注销时Firebase Facebook按钮android身份验证

来自分类Dev

使用带有节点的Azure AD进行身份验证

来自分类Dev

身份验证注销不起作用 Laravel

来自分类Dev

HTTP 基本身份验证注销

来自分类Dev

节点 Passport-azure-ad 错误:“未知的身份验证策略“oauth-bearer””

来自分类Dev

无法注销用户 django 身份验证