passport-azure-ad
このリファレンスhttps://docs.microsoft.com/en-us/azure/active-directory/active-directory-v2-devquickstarts-node-webを使用して、統合アプリ認証のモデルを実装しました。これは私のコードです:
post('/azure/callback', (req : express.Request, res : express.Response, next : Function) => {
if ((req.query.error || req.query.error_description) &&
req.query.state) {
return res.render('oAuthWindow');
}
passportAzureOAuth.authenticate('azuread-openidconnect', (err, user, info) : any => {
if (err) {
return res.status(422).send(err);
} else {
return res.render('oAuthWindow');
}
})(req, res, next);
});
次のように関数azureOauthVerify
を登録しました。passport-azure-ad
// Registered function with callback from azure
azureOAuthVerify(req, iss, sub, profile, accessToken, refreshToken, done) {}
azureOAuthConfig = {
identityMetadata : nconf.get('AZURE_END_POINT'), // For using Microsoft you should never need to change this.
clientID : nconf.get('AZURE_CLIENT_ID'),
responseType : 'id_token code',
responseMode : 'form_post',
passReqToCallback : true,
realm : constants.StringConstants.API_END_POINT,
validateIssuer : false,
skipUserProfile : true,
redirectUrl : constants.StringConstants.API_END_POINT + constants.StringConstants.AZURE_CALLBACK_URL,
clientSecret : nconf.get('AZURE_CLIENT_SECRET'),
scope : ['https://graph.microsoft.com/mail.read', 'offline_access']
};
passport.use(new OIDCStrategy(azureOAuthConfig, azureOAuthVerify));
問題は、Chrome を使用しているすべてのユーザーが適切にログインできることですが、Office メールを使用している一部のユーザー (全員ではない) が Internet Explorer でログインできないことです。
問題をデバッグしたところ、アクセス トークンが から受信されていないことがわかりましたAZURE_ENDPOINT
。つまり、/azure/callback
が呼び出されましたが、パスポートに登録されている関数 が呼び出されてazureOauthVerify
いません。
ここで何が間違っていますか?