Параметр состояния не работает с помощью узла пакета passport-google-oauth2 js

Введение Я работаю с открытой аутентификацией для Google, чтобы пользователь мог войти в систему с помощью аутентификации Google. Использование пакета https://www.npmjs.com/package/passport-google-oauth2 для узла js.

Код работает отлично, за исключением того, что я отправляю переменную состояния, но получаю другое значение состояния. Сначала я подумал, что это может быть проблема с конфигурацией. С последнего дня чтения о параметре состояния, я думаю, что я могу делать неправильные настройки.

Веб-фреймворк: Koa Js

Код аутентификации

passport.use(new GoogleStrategy({
    clientID: 'xxxxxxxxxxx.apps.googleusercontent.com',
    clientSecret: 'xxxxxxxxxxxxxxxxxxxxxx',
    callbackURL: 'http://localhost:5000/auth/callback/google',
    passReqToCallback: true,
    response_type:'token',
    scope: "openid profile email",
    state: base64url(JSON.stringify({blah: 'test'})),
    accessType: 'offline'
  },
  function(request, accessToken, refreshToken, profile, done) {
    if(accessToken){

        console.log('-------request--------??', request);
            console.log('-------accessToken--------??', accessToken);
            console.log('-------refreshToken--------??', refreshToken);
            console.log('-------profile--------??', profile);
            console.log('-------authenticated-------');
            done(null, user);
        }
        else{
            console.log('-------not authenticated-------');
            done(null, false);
        }
  }
));

В редиректе я получаю все параметры в строке запроса, а также переменная состояния, имеющая другое значение.

Пример QueryString

{ 
state: 'T3Lx3XvvSlsGitbNqlCM8CEB',
code: '4/AABGuKCh3Sp0kv2eWSbYsUEAT4iXA2k9u7o2X_ICw0wchiIq38MofOuTmx_yGQSXAFn7iAq9meZXUKRh0qVOAv0',
authuser: '0',
session_state: 'af3af7767c5501d163fa847225b863a9982d76ef..1c9b',
prompt: 'none' 
}

Если кто-то имеет представление о проблеме, пожалуйста, помогите. Спасибо за ваше время.

1 ответ

Решение

Я нашел ответ, на самом деле паспорт js отправляет свое автоматически сгенерированное состояние, сохраненное в сеансе, вместе с вызовом аутентификации. Который позже получен при перенаправлении вызова от Google в строке запроса.

Другие вопросы по тегам