2017-05-10 4 views
1

OIDCStrategy에 대한 여러 정책을 동일한 응용 프로그램 내에서 사용할 수 있습니까? 에 의해 App1 (ClientID1) 또는 App2 (ClientId2)를 통해 인증해야하는 응용 프로그램이 있습니다.passport-azure-ad를 사용하는 OIDCStrategy에 대한 여러 정책

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"키를 실제로 추가하는 전략 다른 전략을 추가 할 때 기존 전략을 재정의합니다.

이렇게 말하면 최신의 것을 사용합니다.

여전히 여러 시나리오를 통해 앱을 여러 AAD 애플리케이션을 통해 인증해야하는 솔루션이 있습니까? ?

해결책 : 지금까지 우리는 멀티 테넌트 AAD 애플리케이션을 등록하고 우리가 원하는대로 세입자를 제한해야합니다.

+0

내 이해를 바탕으로 여러 Azure AD 응용 프로그램을 등록하는 것이 올바른 해결책입니다. 이 솔루션이 만날 수 없다는 다른 요구 사항이 있습니까? –

답변

0

전략을 두 개 만들고 이름을 재정의 한 다음 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', ...));