e-Estado: autenticação de usuários com o Google
https://console.cloud.google.com https://console.cloud.google.com/apis/credentials https://developers.google.com/identity/protocols/oauth2/openid-connect https://developers.google.com/identity/protocols/oauth2/web-server Permitir que o usuário possa se autenticar no e-Estado utilizando o serviço de autenticação do Google, criando assim um alternativa mais padrão para o usuário, já que muitos utilizam esse tipo de autenticação em diversos sistemas, além de ser simples e segura. É esperado que o usuário consiga se autenticar com a sua conta do Google após a realização da integração. Para a implementação da estratégia de autenticação integrada com o Google é necessário, primeiramente, ter um conta no Google que será responsável pelo projeto do e-Estado, após isso: As credencias criadas são necessárias pois no momento da implementação do código para integração é necessário enviá-las para que assim o Google identifique a aplicação que está realizando a requisição de acesso as informações do usuário (após o mesmo permitir), neste caso o e-Estado. Para a implementação das regras de negócio de integração, serão utizadas as bibliotecas google-api-php-client e google-api-nodejs-client, para PHP e JavaScript/TypeScript, respectivamente. Essas bibliotecas visam diminuir a quantidade de códigos necessários e, assim, facilitar a implementação e manutenção. A utilização das bibliotecas anteriormente informadas também ajudam no desenvolvimento do código pois já possuem muitas funções prontas, e todas fortemente testadas, que serão necessárias para realizar a integração. O fluxo de autenticação será conforme a imagem abaixo. Conforme demonstrado, os passos serão os seguintes: Exemplo do código realizar a devida integração: É importante destacar que, as informações que o e-Estado terá acesso a partir da conta do Google do usuário são apenas: A partir deste estudo e dos testes realizados, conclui-se que é viável a implementação da integração com o Google para autenticação e que, de fato, é algo que trará mais comodidade ao usuário pois já é algo que a grande maioria usa no dia a dia em varias aplicações. [1] OpenID Connect. Disponível em: https://developers.google.com/identity/protocols/oauth2/openid-connect. Acesso em: 29 set 2021. [2] Google APIs Client Library for PHP. Dísponível em: https://github.com/googleapis/google-api-php-client. Acesso em: 29 set 2021. [3] Using OAuth 2.0 for Web Server Applications. Disponível em: https://developers.google.com/identity/protocols/oauth2/web-server. Acesso em: 29 set 2021. [4] Google OAuth. Disponível em: http://www.passportjs.org/docs/google/. Acesso em: 29 set 2021.Data:
Data de elaboração
01/12/21
Autores:
Responsável pelo estudo
1.Objetivo
Equipe do estudo
Esquadrão Suicida
Alvo
E-estado Autenticação
Origem
Objetivo
Permitir que os usuários do e-Estado possam vincular suas contas do Google para que assim seja possível se autenticarem no e-Estado a partir dela.
Documentação correlata (opcional)
Observações
Não possui.
2.1. Introdução3.2. Desenvolvimento
import { Router } from "express";
import * as passport from "passport";
import { OAuth2Strategy } from "passport-google-oauth";
const router = Router();
passport.use(
new OAuth2Strategy(
{
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
callbackURL: "http://localhost:3000/auth/google/callback",
},
function (accessToken, refreshToken, profile, done) {
console.log({ accessToken, refreshToken, profile });
User.findOrCreate({ googleId: profile.id }, function (err, user) {
return done(err, user);
});
}
)
);
router.get(
"/auth/google",
passport.authenticate("google", {
scope: ["https://www.googleapis.com/auth/plus.login"],
})
);
router.get(
"/auth/google/callback",
passport.authenticate("google", { failureRedirect: "/login" }),
function (req, res) {
res.redirect("/");
}
);
4.3. Conclusão5.4. Referências