首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用passport-azure-ad的多个OIDCStrategy策略

使用passport-azure-ad的多个OIDCStrategy策略
EN

Stack Overflow用户
提问于 2017-05-10 14:49:15
回答 1查看 918关注 0票数 3

我们是否可以在同一应用程序中对OIDCStrategy使用多个策略。我有一个应用程序需要通过App1(ClientID1)或App2(ClientId2)进行身份验证。

当使用passport-azure-ad OIDCStrategy时,我总是通过它们中的一个进行身份验证。

以下是路由:

代码语言:javascript
复制
app.get('/login1', 
  passport.authenticate('azuread-openidconnect', { failureRedirect: '/' }),
  ....
});

app.post('/auth/openid/return1',
  passport.authenticate('azuread-openidconnect', { failureRedirect: '/' }),
  function(req, res) { 
    ...
  });

app.get('/login2', 
  passport.authenticate('azuread-openidconnect', { failureRedirect: '/' }),
  ....
});

app.post('/auth/openid/return2',
  passport.authenticate('azuread-openidconnect', { failureRedirect: '/' }),
  function(req, res) { 
    ...
  });

以下是已配置的策略。

代码语言:javascript
复制
passport.use(new OIDCStrategy({
    clientID: config.creds.clientID1,
    redirectUrl: config.creds.redirectUrl1,
    clientSecret: config.creds.clientSecret1,
...
});


passport.use(new OIDCStrategy({
    clientID: config.creds.clientID2,
    redirectUrl: config.creds.redirectUrl2,
    clientSecret: config.creds.clientSecret2,
...
});

更新: passport-azure-ad不支持此功能。已经通过深入研究进行了验证。当我们添加新的策略时,当我们添加另一个策略时,它实际上将策略添加到"azuread-openidconnect“键,它覆盖了现有的策略。

代码语言:javascript
复制
passport._strategies['azuread-openidconnect']

也就是说,它将始终使用最新的版本。

对于我的场景,一个应用程序需要通过多个AAD应用程序进行身份验证,我们还是有解决方案的。?

到目前为止的解决方案是:我们应该注册一个多tenannt AAD应用程序,并将租户限制为我们想要的。

EN

回答 1

Stack Overflow用户

发布于 2017-05-13 03:27:33

您可以创建两个策略并覆盖它们的名称,然后在passport.authenticate中指定策略。这个方法对我很有效。

代码语言:javascript
复制
var strategy1 = new OIDCStrategy(...);
strategy1.name = "strategy1";

var strategy2 = new OIDCStrategy(...);
strategy2.name = "strategy2";

passport.use('strategy1');
passport.use('strategy2');

app.get('/login1', passport.authenticate('strategy1', ...));

app.post('/auth/openid/return1', passport.authenticate('strategy1', ...));

app.get('/login2', passport.authenticate('strategy2', ...));

app.post('/auth/openid/return2', passport.authenticate('strategy2', ...));
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43885351

复制
相关文章

相似问题

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