Example usage for com.google.api.client.googleapis.auth.oauth2 GoogleIdToken getPayload

List of usage examples for com.google.api.client.googleapis.auth.oauth2 GoogleIdToken getPayload

Introduction

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

Prototype

@Override
    public Payload getPayload() 

Source Link

Usage

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());
            }/*from ww  w.ja 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:us.blanshard.sudoku.appengine.InstallationUpdateMethod.java

License:Apache License

private void checkAuth(String tokenString, String email) throws MethodException {
    GoogleIdToken token = null;
    boolean ok = false;
    try {/*from  ww  w .  ja va2  s .  c  o m*/
        token = GoogleIdToken.parse(jsonFactory, tokenString);
        if (tokenVerifier.verify(CLIENT_IDS, token)) {
            if (Objects.equal(email, token.getPayload().getEmail()))
                ok = true;
            else
                logger.info("Auth email mismatch, expected " + email);
        }
    } catch (GeneralSecurityException e) {
        logger.log(INFO, "Auth security problem", e);
    } catch (IOException e) {
        logger.log(INFO, "Auth I/O problem", e);
    }
    if (!ok) {
        logger.info("Auth verification failed for " + token);
        throw new MethodException(Rpc.error(Rpc.AUTH_VERIFICATION_FAILED, "Verification failed", null));
    }
}

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  2 s .  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");
        }

    }
}