Example usage for com.google.api.client.googleapis.auth.oauth2 GoogleIdTokenVerifier verify

List of usage examples for com.google.api.client.googleapis.auth.oauth2 GoogleIdTokenVerifier verify

Introduction

In this page you can find the example usage for com.google.api.client.googleapis.auth.oauth2 GoogleIdTokenVerifier verify.

Prototype

public GoogleIdToken verify(String idTokenString) throws GeneralSecurityException, IOException 

Source Link

Document

Verifies that the given ID token is valid using #verify(GoogleIdToken) and returns the ID token if succeeded.

Usage

From source file:servicios.GestorUsuario.java

public static String loginGoogle(HttpServletRequest request) {

    String result = "Error: login invalido";
    Usuario usuario = null;//from  w  ww.jav  a2  s .c o m
    //Mirar primero si esta ya logeado desde esa sesion
    HttpSession sesion = request.getSession();
    boolean logged = (Boolean.valueOf((String) sesion.getAttribute("logged")));
    if (logged) {
        //TODO GESTIONAR MULTIPLES LOGINS, PROBABLEMENTE HAYA QUE TENER UNA LISTA CON LOS USUARIOS LOGEADOS, O SE PERMITE LOGIN DESDE MULTIPLES DISPOSITIVOS?
        result = "Error: ya logeado";
    } else {
        String idTokenString = request.getParameter("id_token");
        NetHttpTransport transport = new NetHttpTransport();
        GsonFactory jsonFactory = new GsonFactory();

        if (idTokenString != null && !idTokenString.equals("")) {
            GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
                    .setAudience(Arrays.asList(SERVER_CLIENT_ID)).setIssuer("https://accounts.google.com")
                    .build();

            try {
                GoogleIdToken idToken = verifier.verify(idTokenString);
                if (idToken != null) {
                    Payload payload = idToken.getPayload();
                    String email = payload.getEmail();

                    UsuarioDAO dao = new UsuarioDAO();
                    if (dao.existsUsuario(email)) {
                        usuario = dao.findUsuarioByEmail(email);
                    }
                }

                if (usuario != null) {
                    sesion.setAttribute("logged", true);
                    sesion.setAttribute("usuario", usuario);
                    System.out.println("El usuario " + usuario.getEmail() + " ha iniciado sesin");

                    //Generar y devolver el estado inicial del usuario
                    EstadoLogin estado = generarEstado(usuario, request.getServletContext());
                    Gson gson = new Gson();
                    result = gson.toJson(estado);
                    Logger.getLogger(GestorUsuario.class.getName()).log(Level.INFO,
                            "El resultado es: " + result);
                    System.out.println("El estado del usuario " + usuario.getEmail() + " es " + result);
                    return result;
                }

            } catch (IOException | GeneralSecurityException ex) {
                Logger.getLogger(GestorUsuario.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(GestorUsuario.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(GestorUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    return result;
}

From source file:servicios.GestorUsuario.java

public static String registrarGoogle(HttpServletRequest request) {
    String result = "Error en registro";
    Usuario usuario = null;/*from  w ww . j  av  a 2  s  . co m*/
    String idTokenString = request.getParameter("id_token");
    NetHttpTransport transport = new NetHttpTransport();
    GsonFactory jsonFactory = new GsonFactory();

    if (idTokenString != null && !idTokenString.equals("")) {
        GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
                .setAudience(Arrays.asList(SERVER_CLIENT_ID)).setIssuer("https://accounts.google.com").build();

        try {
            GoogleIdToken idToken = verifier.verify(idTokenString);
            if (idToken != null) {
                Payload payload = idToken.getPayload();
                String email = payload.getEmail();
                String nombre = (String) payload.get("given_name");
                String apellidos = (String) payload.get("family_name");

                usuario = new Usuario(email, nombre, apellidos);
                UsuarioDAO dao = new UsuarioDAO();
                if (dao.existsUsuario(email)) {
                    Exception e = new UserAlreadyExistsException(email);
                    result = e.toString();
                    System.out.println(result);
                } else {
                    dao.addUsuario(usuario);
                    HttpSession sesion = request.getSession();
                    sesion.setAttribute("logged", true);
                    sesion.setAttribute("usuario", usuario);
                    System.out.println("El usuario " + usuario.getEmail() + " ha iniciado sesin");

                    //Generar y devolver el estado inicial del usuario
                    EstadoLogin estado = generarEstado(usuario, request.getServletContext());
                    Gson gson = new Gson();
                    result = gson.toJson(estado);
                    //Logger.getLogger(GestorUsuario.class.getName()).log(Level.INFO, "El resultado es: " + result);
                    System.out.println("El estado del usuario " + usuario.getEmail() + " es " + result);
                    return result;
                }
            }

        } catch (IOException | GeneralSecurityException ex) {
            Logger.getLogger(GestorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(GestorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(GestorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    return result;
}

From source file:servlet.Signin.java

public String processToken(String idTokenString, HttpServletRequest request, HttpServletResponse response) {

    //idTokenString = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjlmYjk4ZGY3NDg2ZTJjNTg4NjdjNzA0ODVmODM1MDMzNGQxMmQ5NzcifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiaWF0IjoxNDc3NjM1MzY0LCJleHAiOjE0Nzc2Mzg5NjQsImF0X2hhc2giOiI5YUk5R09jT1diWldXeTh6Ui1jR2VBIiwiYXVkIjoiMTA2NzMwNzIzNDY5NS1wc3FtNXBlc2dsMHRtZmMwY2MxN3NnZWtqY2dhb2RuMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjEwOTMyNDIwODIyMzAxNjExODQ4MyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhenAiOiIxMDY3MzA3MjM0Njk1LXBzcW01cGVzZ2wwdG1mYzBjYzE3c2dla2pjZ2FvZG4wLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiaGQiOiJzdHVkZW50LnVuaW1lbGIuZWR1LmF1IiwiZW1haWwiOiJwa2h1bXJpbkBzdHVkZW50LnVuaW1lbGIuZWR1LmF1IiwibmFtZSI6IlBpeWFwb25nIEtodW1yaW4iLCJwaWN0dXJlIjoiaHR0cHM6Ly9saDUuZ29vZ2xldXNlcmNvbnRlbnQuY29tLy04NEtHWHVqWWpUay9BQUFBQUFBQUFBSS9BQUFBQUFBQUFBQS9BS1RhZUs5dnFtcWtlU05RTEpDNEF0a0NfUHBwdWNrUDdBL3M5Ni1jL3Bob3RvLmpwZyIsImdpdmVuX25hbWUiOiJQaXlhcG9uZyIsImZhbWlseV9uYW1lIjoiS2h1bXJpbiIsImxvY2FsZSI6ImVuIn0.4ETXNLS7KnwkyNgBZEH9Y-G1fE8dsH7rN1sTeCXbtLXfIgVsgZAXoQW2z8ZZd-cgkFu19U2NB9CueEQocjxpev0JmLUW8RuNLvn08rHn1oczeeaAs9z4KjVvhlVYIR7cjKS_90M2Ufr0FYRVA61b9IJwsUvUk2CMLI9W6F0xthPVgTaNMnLesFHBqBoJc6SHA0sVsStGkW2kWLDrchdM-tJhretZoEtpk_Yzd_pjG113NlU9xddd08huaG8dAShlRIOuRw1mKf6WUZQ7LT4-gOSK5nFa8NMUZDEWdf3WJm9NX6CVyDEVag6d65FRvw9vZ65U6m5PAFAkZtSgJX19zA";
    String returnVal = "";
    NetHttpTransport transport = new NetHttpTransport();
    GsonFactory jsonFactory = new GsonFactory();

    if (idTokenString != null && !idTokenString.equals("")) {
        GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
                .setAudience(Arrays
                        .asList("1067307234695-psqm5pesgl0tmfc0cc17sgekjcgaodn0.apps.googleusercontent.com"))
                // To learn about getting a Server Client ID, see this link
                // https://developers.google.com/identity/sign-in/android/start
                // And follow step 4
                // If you retrieved the token on Android using the Play Services 8.3 API or newer, set
                // the issuer to "https://accounts.google.com". Otherwise, set the issuer to
                // "accounts.google.com". If you need to verify tokens from multiple sources, build
                // a GoogleIdTokenVerifier for each issuer and try them both.
                .setIssuer("accounts.google.com").build();

        try {//  ww w.j a  va2s .  c  o m
            GoogleIdToken idToken = verifier.verify(idTokenString);
            if (idToken != null) {
                Payload payload = idToken.getPayload();
                //userid
                String userid = payload.getSubject();
                //returnVal = "match";
                request.getSession().setAttribute("userid", userid);
                Database db = new Database();
                //db.getConnection111();
                db.init();
                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String sessionid = df.format(new Date());
                request.getSession().setAttribute("sessionid", sessionid);
                db.login("login", request.getSession().getAttribute("userid").toString(),
                        request.getSession().getAttribute("sessionid").toString());
                boolean firstvisit = db.checkYearlevelrecord(userid);
                if (firstvisit) {
                    returnVal = "firstvisit";
                } else {
                    returnVal = "visited";
                }

                // You can also access the following properties of the payload in order
                // for other attributes of the user. Note that these fields are only
                // available if the user has granted the 'profile' and 'email' OAuth
                // scopes when requested.
                // String email = payload.getEmail();
                // boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
                // String name = (String) payload.get("name");
                // String pictureUrl = (String) payload.get("picture");
                // String locale = (String) payload.get("locale");
                // String familyName = (String) payload.get("family_name");
                // String givenName = (String) payload.get("given_name");

                //for scoring at the end

                //request.getSession().setAttribute("hxin", 0);
                //request.getSession().setAttribute("pein", 0);
                //request.getSession().setAttribute("labin", 0);
            } else {
                //return false;
                returnVal = "Invalid ID token.";
            }
        } catch (Exception ex) {
            //return false;
            returnVal = ex.getMessage();
        }
    } else {
        //return false;
        returnVal = "Bad Token Passed In";
    }
    return returnVal;
}

From source file:uk.co.jassoft.markets.api.UserController.java

@PreAuthorize("isAnonymous()")
@RequestMapping(value = "/oauth2/google", method = RequestMethod.POST)
public @ResponseBody User oauth2(final HttpServletResponse response, @RequestBody String token)
        throws IOException, UserException, GeneralSecurityException {

    GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(),
            JacksonFactory.getDefaultInstance()).setAudience(Arrays.asList(oauthGoogleToken))
                    // If you retrieved the token on Android using the Play Services 8.3 API or newer, set
                    // the issuer to "https://accounts.google.com". Otherwise, set the issuer to
                    // "accounts.google.com". If you need to verify tokens from multiple sources, build
                    // a GoogleIdTokenVerifier for each issuer and try them both.
                    .setIssuer("accounts.google.com").build();

    // (Receive idTokenString by HTTPS POST)

    GoogleIdToken idToken = verifier.verify(token);
    if (idToken != null) {
        GoogleIdToken.Payload payload = idToken.getPayload();

        // Print user identifier
        //            String userId = payload.getSubject();
        //            System.out.println("User ID: " + userId);

        // Get profile information from payload
        String email = payload.getEmail();
        boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
        String familyName = (String) payload.get("family_name");
        String givenName = (String) payload.get("given_name");
        Date expiry = new Date(((Long) payload.get("exp")) * 1000);
        Date loggedIn = new Date(((Long) payload.get("iat")) * 1000);

        if (emailVerified) {

            User user = userRepository.findByEmail(email);

            if (user == null) {
                // TODO - Create user
                user = userRepository.save(
                        UserBuilder.anUser().withEmail(email).withForename(givenName).withSurname(familyName)
                                .withActivated(true).withOAuth2Provider(OAuth2Provider.GOOGLE).build());
            }//w ww  .  j a v  a 2 s  . co  m

            if (user.getoAuth2Provider() == null || !user.getoAuth2Provider().equals(OAuth2Provider.GOOGLE)) {
                throw new UserExistsException("User Exists with Email " + user.getEmail());
            }

            user.setToken(UUID.randomUUID().toString());
            user.setTokenExpiry(expiry);
            user.setLastLogin(loggedIn);

            user = userRepository.save(user);

            response.setHeader("Cache-Control", "no-cache");
            return user.clean();
        }

    }

    throw new UserIncorrectCredentialsException("Invalid ID token");

}

From source file:web.GoogleServlet.java

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException, GeneralSecurityException {
    response.setContentType("text/html;charset=UTF-8");
    request.setCharacterEncoding("UTF-8");
    response.setHeader("Cache-Control", "no-cache, must-revalidate");
    response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
    response.setDateHeader("Expires", 0); // Proxies.
    try (PrintWriter out = response.getWriter()) {
        String action = request.getParameter("action");
        if (action.equals("loginGoogle")) {
            //HttpTransport transport = new HttpTransport();
            JsonFactory jsonFactory = new JacksonFactory();
            NetHttpTransport transport = new NetHttpTransport();

            GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
                    .setAudience(Arrays.asList(Constants.ID_GOOGLE)).build();

            String idTokenString = request.getParameter("token");
            GoogleIdToken idToken = verifier.verify(idTokenString);

            if (idToken != null) {
                Payload payload = idToken.getPayload();
                String id = request.getParameter("id");
                if (id.equals(payload.getUserId())) {
                    System.out.println("id utente e id del token uguali");
                    String email = request.getParameter("email");
                    String idgoogle = request.getParameter("idgoogle");
                    UtenteGoogle u = gestoreUtenti.loginGoogle(email, idgoogle);
                    //Profilo p = profiloFacade.getProfilo(email);
                    if (u != null) {
                        HttpSession s = request.getSession();

                        s.setAttribute("id", u.getProfilo().getId());
                        s.setAttribute("nome", "" + u.getProfilo().getNome());
                        s.setAttribute("cognome", "" + u.getProfilo().getCognome());
                        s.setAttribute("email", "" + u.getProfilo().getEmail());
                        s.setAttribute("data", "" + u.getProfilo().getData_nascita());
                        s.setAttribute("sesso", "" + u.getProfilo().getSesso());
                        s.setAttribute("location", "" + u.getProfilo().getComune().getNome());
                        s.setAttribute("foto", "" + u.getProfilo().getFoto_profilo());

                        out.println("1");

                    } else {
                        System.out.println("non sono loggato!");
                        out.println("0");
                    }//from ww  w .  jav a  2s.  c o  m
                } else {
                    System.out.println("id utente e id del token non uguali");
                    out.println("-1");
                }

            } else {
                System.out.println("Invalid ID token.");
                out.println("-1");
            }
        } else {
            System.out.println("Action OTHER");
        }

    }
}