Я использую модуль passport- azure -ad от Microsoft для соединения с открытым идентификатором. Поток, который я намереваюсь, является потоком кода авторизации, и мое объявление azure настроено для потока кода аутентификации. У меня такой вопрос:
1) Действительно ли passport- azure - смотрит на тип ответа, как если бы он был "code", тогда он сделает первый вызов, чтобы получить код, а затем обменяет код на знак Поскольку я не делаю два вызова, когда выполняю свой код и напрямую получаю access_token
2) Как мы реализуем поток предоставления кода авторизации с PKCE с паспортом- azure -ad?
Мой код выглядит следующим образом
config.creds.responseType = 'code';
config.creds.responseMode = 'form_post';
config.creds.validateIssuer = true,
config.creds.issuer = null,
config.creds.passReqToCallback = false,
config.creds.useCookieInsteadOfSession = true,
config.creds.scope = 'email profile api://<gateway-url>/.default',
passport.use(new OIDCStrategy({
identityMetadata: config.creds.identityMetadata,
clientID: config.creds.clientID,
responseType: config.creds.responseType,
responseMode: config.creds.responseMode,
redirectUrl: config.creds.redirectUrl,
allowHttpForRedirectUrl: config.creds.allowHttpForRedirectUrl,
clientSecret: config.creds.clientSecret,
validateIssuer: config.creds.validateIssuer,
isB2C: config.creds.isB2C,
issuer: config.creds.issuer,
passReqToCallback: config.creds.passReqToCallback,
scope: config.creds.scope,
loggingLevel: config.creds.loggingLevel,
nonceLifetime: config.creds.nonceLifetime,
nonceMaxAmount: config.creds.nonceMaxAmount,
useCookieInsteadOfSession: config.creds.useCookieInsteadOfSession,
cookieEncryptionKeys: config.creds.cookieEncryptionKeys,
clockSkew: config.creds.clockSkew,
},
function(iss, sub, profile, jwtClaims, accessToken, refreshToken, params, done) {
if (!profile.oid) {
return done(new Error("No oid found"), null);
}
profile.groups = jwtClaims.groups;
profile.auth_tokens = params;
console.log("**************Params received after login: ", params);
//asynchronous verification, for effect...
process.nextTick(function () {
findByOid(profile.oid, function(err, user) {
if (err) {
return done(err);
}
if (!user) {
// "Auto-registration"
users.push(profile);
return done(null, profile);
}
return done(null, user);
});
});
}
));