【问题标题】:Multiple policies for OIDCStrategy using passport-azure-ad使用 passport-azure-ad 的 OIDCStrategy 的多个策略
【发布时间】:2017-10-08 16:21:38
【问题描述】:

我们能否在同一个应用程序中为 OIDCStrategy 设置多个策略。 我有一个需要通过身份验证的应用程序 通过 App1(ClientID1) 或 App2(ClientId2)。

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

路线如下:

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) { 
    ...
  });

这是配置的策略。

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”添加策略 当我们添加另一个时,它会覆盖现有的。

passport._strategies['azuread-openidconnect']

也就是说,它总是使用最新的。

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

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

【问题讨论】:

  • 根据我的理解,注册多个 Azure AD 应用程序是一个正确的解决方案。您是否还有其他此解决方案无法满足的要求?

标签: node.js adal passport-azure-ad


【解决方案1】:

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

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', ...));

【讨论】:

    猜你喜欢
    • 2021-03-15
    • 2017-03-04
    • 2017-12-28
    • 2015-01-03
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2015-08-16
    相关资源
    最近更新 更多