List of usage examples for com.google.api.client.googleapis.auth.oauth2 GoogleIdTokenVerifier verify
public GoogleIdToken verify(String idTokenString) throws GeneralSecurityException, IOException
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"); } } }