0

Open id connect に Microsoft の Passport-azure-ad モジュールを使用しています。私が意図するフローは認証コード フローであり、Azure 広告は認証コード フローになるように構成されています。私の質問は:

1) Passport-azure-ad は、"コード" であるかのように応答の種類を調べますか? コードを取得するための最初の呼び出しを行い、コードをトークンと交換します。コードを実装するときに 2 つの呼び出しを行わず、access_token を直接取得するため

2) PKCE を使用して、passport-azure-ad を使用して Authorization Code Grant Flow を実装するにはどうすればよいですか?

私のコードは次のようになります


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



4

1 に答える 1