Как аутентифицировать клиентское приложение angular 10 из node / express js, используя стратегию passport-Google?

#node.js #angular #express #passport-local #passport-google-oauth2

#node.js #angular #экспресс #паспорт-локальный #паспорт-google-oauth2

Вопрос:

Я создаю веб-приложение, которое используется поверх архитектуры микросервисов.

Используя node / express js, я внедрил службу аутентификации и службу продуктов, которые прослушивают разные порты, такие как

http://localhost:8001 для службы аутентификации http://localhost:8002 для обслуживания продуктов.

Шлюз Kong используется для аутентификации и подключения микросервисов к jwt. Реализована стратегия passport-jwt и passport-local для аутентификации пользователей со стороны клиента с использованием вызовов post.

Наконец, я реализовал аутентификацию Google на стороне сервера, используя стратегию passport-Google в приведенном ниже URL

http://localhost:8001/auth/google -> он направляет меня к экрану авторизации Google после входа в систему, который перенаправляет на указанный ниже URL

http://localhost:8001/auth/google/callback с помощью токена. он отлично работает на стороне сервера.

 async googlecallback(req, res, next){
   
    passport.authenticate('google', {
        session: false,
    }, (err, user, message) => {  

        if (!user) {
            return next(new UnAuthorizedException(message))
        }
        
        const token = user.generateToken()
        user = UserTransformer.transform(user)
        user.token = token

        this.Response(res, user, message) // sending response to client using custom method
    })(req, res)
}
 

. Когда я прихожу для аутентификации пользователя со стороны клиента angular app. Я не могу продолжить. просто борюсь здесь. 🙁

Как я могу аутентифицировать пользователя, когда он нажимает кнопку входа в Google в angular 10 на стороне клиента?

Мой URL-адрес приложения, например http://localhost:4002/account/login

Пытался использовать window.open («http://localhost:8001/auth/google «,»_blank») метод, работающий не так, как ожидалось.

res.setHeader(‘x-code’, ‘jwthere’); метод заголовка. Также пытался передать токен JWT с параметром URL. но оба кажутся небезопасными.

http://localhost:4002/account/login ?токен = 7wF8bit5W1Pfi5Glt1X8H0YQu8BN7OeNRcX1zbj3AGpUHaYSxLlNIjHpzuw

безопасность здесь является основной проблемой. Я хочу, чтобы Google входил в систему, как социальный вход в khanacademy

https://www.khanacademy.org