2016-09-28 3 views
0

Ich versuche, Setup Google Auth für ein Hapi.js Projekt und ich kann nicht sehen, warum ich eine Umleitung Schleife zurück zu meiner Login Route immer nach der Anmeldung.Hapi.js Glocke/Auth-Cookie-Redirect Loop-

Dies ist nur dann der Fall, wenn der Nutzer nicht bereits in seinem Google-Konto angemeldet war oder der App nicht die Berechtigung erteilt wurde, auf ihre Daten zuzugreifen.

Dies ist der Auth Registrierungscode

server.auth.strategy('session', 'cookie', true, { 
    password: 'private_key', 
    redirectTo: '/login/google' 
}); 

server.auth.strategy('google', 'bell', { 
    provider: 'google', 
    password: 'private_key', 
    clientId: 'client_id', 
    clientSecret: 'client_secret', 
    location: 'same_origin_registered_with_google' 
}); 

Und das sind meine beiden Routen

server.route({ 
    method: ['GET', 'POST'], 
    path: '/login/google', 
    config: { 
     auth: { 
      strategy: 'google', 
      mode: 'try' 
     }, 
     plugins: { 'hapi-auth-cookie': { redirectTo: false } }, 
     handler: (request, reply) => { 
      if (!request.auth.isAuthenticated) { 
       return reply('Authentication failed due to: ' + request.auth.error.message); 
      } 

      let creds = request.auth.credentials; 

      request.cookieAuth.set({ 
       token: creds.token, 
       userId: creds.profile.id 
      }); 

      return reply.redirect('/'); 
     } 
    } 
}); 

server.route({ 
    method: 'GET', 
    path: '/', 
    handler: (request, reply) => { 
     return reply('hello'); 
    } 
}); 

Zu beachten ist der Auth-Cookie gesetzt wird und wenn die Umleitung Schleife I navigieren verlassen hat die "/" Route manuell kein Problem.

Jede mögliche Hilfe bei dieser sehr geschätzt

Antwort

4

Dies ist auf hapi-auth-cookie noch nicht mit der isSameSite Cookie-Option in hapi 15 tut das Cookie verursacht nicht zurück an den Server gesendet werden.

Sie können dies lösen, indem Sie die Option manuell einstellen.

Weitere Informationen finden Sie in der hapi 15 Release finden merkt https://github.com/hapijs/hapi/issues/3323 und die PR auf hapi-auth-cookiehttps://github.com/hapijs/hapi-auth-cookie/pull/142

+0

nicht sicher, warum Maintainer nicht diese PR verschmilzt. – Subin

+0

@Subin Die PR ist jetzt zusammengeführt: D –

+0

Gibt es ein Sicherheitsleck tun isSameSite Lax? –

0

Dieses Problem behebt:

server.auth.strategy('session', 'cookie', true, { 
    password: 'private_key', 
    redirectTo: '/login/google', 
    isSameSite: 'Lax' 
}); 
Verwandte Themen