我们可以在同一个应用程序中为 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 应用程序并将租户限制为我们想要的。