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:autenticacion.Autenticador.java

public User validateGoogleToken(String UserToken) {
    GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(TRANSPORT, JSON_FACTORY)
            .setAudience(Collections.singletonList(CLIENT_ID)).build();

    // (Receive idTokenString by HTTPS POST)
    GoogleIdToken idToken = null;/*  ww  w  . ja  v  a2 s.  c  o  m*/
    try {
        idToken = verifier.verify(UserToken);
    } catch (GeneralSecurityException | IOException ex) {
        Logger.getLogger(LoginREST.class.getName()).log(Level.SEVERE, null, ex);
    }

    if (idToken != null) {
        GoogleIdToken.Payload payload = idToken.getPayload();
        // Get profile information from payload
        String email = payload.getEmail();
        boolean emailVerified = payload.getEmailVerified();
        if (!emailVerified) {
            System.out.println("Invalid ID token.");
            return null;
        }
        String nombre = (String) payload.get("name");
        String apellido = (String) payload.get("family_name");
        return new User(nombre, apellido, email);

    }
    return null;
}

From source file:bean.LoginBean.java

public void googleLogin() {

    Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext()
            .getRequestParameterMap();//from  www  .j a v  a 2 s . c om
    String tokenId = params.get("token");
    String email = params.get("email");
    String firstName = params.get("first_name");
    String lastName = params.get("last_name");

    try {
        GsonFactory jsonFactory = new GsonFactory();
        NetHttpTransport transport = new NetHttpTransport();
        GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
                .setAudience(Collections.singletonList(
                        "640461808271-qlamo36cn4t9c2k6s4ujggf96smmvhfh.apps.googleusercontent.com"))
                .build();

        GoogleIdToken idToken = verifier.verify(tokenId);

        if (idToken != null) {
            User usr = UserDAO.findByGEmail(email);
            if (usr == null) {
                usr = UserDAO.registerG(email, firstName, lastName);
            }
            if (usr != null) {
                loggedIn = true;
                currentUser = usr;
                username = currentUser.getUsername();
                gLogin = true;
                UserDAO.logDateTime(usr);
                messages = MessageDAO.getForUserAndDelete(usr);
                for (Message msg : messages) {
                    switch (msg.getType()) {
                    case "reserved":
                        FacesContext.getCurrentInstance().addMessage("userNotifications",
                                new FacesMessage(FacesMessage.SEVERITY_WARN, "Notification:",
                                        "The event you have reserved a ticket for: "
                                                + msg.getEvent().getEventName() + " has been cancelled."));
                        break;
                    case "sold":
                        FacesContext.getCurrentInstance().addMessage("userNotifications",
                                new FacesMessage(FacesMessage.SEVERITY_ERROR, "Notification:",
                                        "The event you have bought a ticket for: "
                                                + msg.getEvent().getEventName() + " has been cancelled."));
                        break;
                    case "performer":
                        FacesContext.getCurrentInstance().addMessage("userNotifications",
                                new FacesMessage(FacesMessage.SEVERITY_WARN, "Notification:",
                                        "The event you have a ticket for: " + msg.getEvent().getEventName()
                                                + " has changed it's lineup."));
                        break;
                    case "timetable":
                        FacesContext.getCurrentInstance().addMessage("userNotifications",
                                new FacesMessage(FacesMessage.SEVERITY_WARN, "Notification:",
                                        "The event you have a ticket for: " + msg.getEvent().getEventName()
                                                + " has changed it's timetable."));
                        break;
                    }
                }
                try {
                    FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml");
                    FacesContext.getCurrentInstance().responseComplete();
                } catch (IOException ex) {
                    Logger.getLogger(LoginBean.class.getName()).log(Level.SEVERE, null, ex);
                }
            } else {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Error:", "Your email already exists in the system, try logging in without google!"));
            }
        } else {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error:", "There has been an error with your token validation!"));
        }
    } catch (GeneralSecurityException | IOException ex) {
        Logger.getLogger(LoginBean.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:bg.neutrino.GoogleLogin.java

public User login() throws Exception {
    DeviceProperties dp = new DeviceProperties();
    String CLIENT_ID = dp.get().getProperty("google.oauth2.api.key");

    GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jacksonFactory)
            .setAudience(Collections.singletonList(CLIENT_ID))
            // Or, if multiple clients access the backend:
            // .setAudience(Arrays.asList(CLIENT_ID_1, CLIENT_ID_2,
            // CLIENT_ID_3))
            .build();//from   w  w  w  . j  av  a 2 s  .co m

    // (Receive idTokenString by HTTPS POST)
    //System.out.println(idTokenString);

    GoogleIdToken idToken = null;
    try {
        idToken = verifier.verify(idTokenString);
    } catch (GeneralSecurityException | IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    if (idToken != null) {
        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 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");

        User user = new User();
        user.setId(userId);
        user.setEmail(email);
        user.setName(name);
        user.setIsGuest(false);

        return user;

    } else {
        throw new Exception("Invalid ID token.");
    }
}

From source file:bg.neutrino.GoogleUser.java

public boolean login() {
    DeviceProperties dp = new DeviceProperties();
    String CLIENT_ID = dp.get().getProperty("google.oauth2.api.key");

    GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jacksonFactory)
            .setAudience(Collections.singletonList(CLIENT_ID))
            // Or, if multiple clients access the backend:
            // .setAudience(Arrays.asList(CLIENT_ID_1, CLIENT_ID_2,
            // CLIENT_ID_3))
            .build();/* w  ww  .  j a  v  a 2s  .c o  m*/

    // (Receive idTokenString by HTTPS POST)
    System.out.println(idTokenString);

    GoogleIdToken idToken = null;
    try {
        idToken = verifier.verify(idTokenString);
    } catch (GeneralSecurityException | IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    if (idToken != null) {
        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 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");

        return true;

    } else {
        System.out.println("Invalid ID token.");
    }

    return false;
}

From source file:co.carlosandresjimenez.gotit.backend.Utility.java

License:Open Source License

public static String validateGoogleToken(String accessToken) {

    NetHttpTransport transport = new NetHttpTransport();
    JsonFactory mJFactory = new GsonFactory();

    GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, mJFactory)
            .setAudience(Arrays.asList(CLIENT_ID)).build();

    GoogleIdToken idToken;//w  w  w.ja v a2 s  .c  om
    Payload payload;
    String email = "";

    try {
        idToken = verifier.verify(accessToken);

        if (idToken != null) {
            //System.out.println("Token validated successfully");
        } else {
            //System.out.println("Invalid ID token.");
            return "INVALID";
        }

        payload = idToken.getPayload();

        if (payload != null) {
            email = payload.getEmail();
        }

    } catch (GeneralSecurityException gse) {
        gse.printStackTrace();
        return "INVALID";
    } catch (IOException ioe) {
        ioe.printStackTrace();
        return "INVALID";
    } catch (IllegalArgumentException iae) {
        iae.printStackTrace();
        return "INVALID";
    } catch (Exception e) {
        e.printStackTrace();
        return "INVALID";
    }

    return email;
}

From source file:co.uk.gauntface.devicelab.appengine.utils.GPlusTokenInfo.java

License:Open Source License

public static String getUserId(String token) {
    try {//  w w w  . j  a v a 2 s  .  c om
        JsonFactory jsonFactory = new JacksonFactory();
        GoogleIdToken idToken = GoogleIdToken.parse(jsonFactory, token);
        if (token == null) {
            return null;
        }

        // Verify valid token, signed by google.com, intended for 3P
        GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier(new NetHttpTransport(),
                new JacksonFactory());
        if (verifier.verify(idToken)) {
            Payload payload = idToken.getPayload();
            return payload.getSubject();
        }
    } catch (GeneralSecurityException e) {
    } catch (IOException e) {
    }
    return null;
}

From source file:com.devnexus.ting.web.controller.AndroidLoginController.java

License:Open Source License

/**
 * This will verify tokens sent from an Authenticated Android device that
 * the user is who the user says it is.//from  w  w  w.j a  v  a  2s .c  o  m
 * <p/>
 * Additionally it will create an account if one does not exist.
 */
@RequestMapping(value = "/s/loginAndroid", method = RequestMethod.POST)
@ResponseBody
public String login(HttpServletRequest request, HttpServletResponse response) {

    try {

        AndroidAuthentication auth = GSON.fromJson(request.getReader(), AndroidAuthentication.class);
        String accessToken = auth.idToken;

        GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(),
                new JacksonFactory()).setAudience(Arrays.asList(CLIENT_ID))
                        // 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("https://accounts.google.com").build();

        GoogleIdToken idToken = verifier.verify(accessToken);
        Payload payload = idToken.getPayload();

        User user;
        try {
            user = (User) userService.loadUserByUsername("google:" + payload.getSubject());
        } catch (UsernameNotFoundException e) {
            user = new User();
            user.setEmail(payload.getEmail());
            user.setUsername("google:" + payload.getSubject());
            user.setUserAuthorities(new HashSet<UserAuthority>(1));
            user.getUserAuthorities().add(new UserAuthority(user, AuthorityType.APP_USER));
            user.setFirstName((String) payload.get("given_name"));
            user.setLastName((String) payload.get("family_name"));
            byte[] password = new byte[16];
            new SecureRandom().nextBytes(password);
            user.setPassword(Arrays.toString(password));

            try {
                userService.addUser(user);
            } catch (DuplicateUserException ex) {
                Logger.getLogger(AndroidLoginController.class.getName()).log(Level.SEVERE, null, ex);
                throw new RuntimeException(ex);
            }

            user = (User) userService.loadUserByUsername(user.getUsername());

        }

        MobileSignIn signIn = new MobileSignIn();
        signIn.setToken(new BigInteger(512, new SecureRandom()).toString(32));
        signIn.setUser(user);
        user.getMobileTokens().add(signIn);

        userService.updateUser(user);

        return "{\"token\":\"" + signIn.getToken() + "\"}";

    } catch (IOException | GeneralSecurityException e) {
        Logger.getAnonymousLogger().log(Level.SEVERE, e.getMessage(), e);

        throw new RuntimeException(e);
    }

}

From source file:com.keybox.manage.action.LoginAction.java

License:Apache License

/**
 * Validates fields for auth submit/*from  w  w w  . ja v a  2 s  .c  o m*/
 */
public void validateLoginSubmit() {
    if (auth.getUsername() == null || auth.getUsername().trim().equals("")) {
        addFieldError("auth.username", "Required");
    }
    if ((auth.getPassword() == null || auth.getPassword().trim().equals(""))
            && (auth.getOauthToken() == null || auth.getOauthToken().equals(""))) {
        addFieldError("auth.password", "Required");
    }
    // validate auth token
    if (auth.getOauthToken() != null && !auth.getOauthToken().equals("")) {
        String idTokenString = auth.getOauthToken();

        GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new ApacheHttpTransport(),
                new JacksonFactory()).setAudience(Arrays.asList(AppConfig.getProperty("googleClientId")))
                        .setIssuer(AppConfig.getProperty("googleIssuer")).build();
        GoogleIdToken idToken = null;
        try {
            idToken = verifier.verify(idTokenString);
        } catch (GeneralSecurityException | IOException e) {
            loginAuditLogger.error("Token Verify Exception: " + e);
            addActionError(AUTH_ERROR);
        }
        if (idToken == null) {
            addActionError("Invalid Token");
        }
    }
}

From source file:com.lanastara.gtd.google.GoogleAuthenticator.java

@Override
protected boolean authenticate(Request request, Response response) {

    GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(),
            new JacksonFactory()).setAudience(
                    Arrays.asList("926615361246-oggengfh02hmjhjes5ki04pfin8m0hqa.apps.googleusercontent.com"))
                    .build();// www .  j  av  a 2  s.  c  om

    Series<Cookie> cookies = request.getCookies();
    Cookie token_cookie;
    if ((token_cookie = cookies.getFirst("id_token")) != null) {
        try {
            GoogleIdToken idToken = verifier.verify(token_cookie.getValue());
            if (idToken != null) {
                GoogleIdToken.Payload payload = idToken.getPayload();
                if (payload.getEmailVerified()) {
                    request.getClientInfo().setUser(new User(payload.getEmail()));
                    return true;
                }
            }
        } catch (GeneralSecurityException | IOException ex) {
            Logger.getLogger(GoogleAuthenticator.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    response.setStatus(Status.CLIENT_ERROR_UNAUTHORIZED);
    return false;
}

From source file:com.rse.middleware.GoogleTokenVerifier.java

public Payload verify(String token) {
    try {/*from   w ww.jav  a2s.  c  om*/
        String CLIENT_ID = this.CLIENT_ID;
        NetHttpTransport transport = new NetHttpTransport();
        List mClientIDs = Arrays.asList(CLIENT_ID);
        JsonFactory jsonFactory = new GsonFactory();
        GoogleIdTokenVerifier verifier;
        String mProblem = "Verification failed. (Time-out?)";
        String mAudience = this.CLIENT_ID;
        verifier = new GoogleIdTokenVerifier(transport, jsonFactory);
        Payload payload = null;
        GoogleIdToken idToken = GoogleIdToken.parse(jsonFactory, token);
        if (verifier.verify(idToken)) {
            GoogleIdToken.Payload tempPayload = idToken.getPayload();
            System.out.println(tempPayload.getAudience());
            System.out.println(tempPayload.getIssuee());
            System.out.println(tempPayload.getIssuer());
            System.out.println(tempPayload.get("email"));
            if (!tempPayload.getAudience().equals(mAudience)) {
                mProblem = "Audience mismatch";
            } else if (!mClientIDs.contains(tempPayload.getIssuee())) {
                mProblem = "Client ID mismatch";
            } else {
                payload = tempPayload;
            }
        } else {
            System.out.println("Invalid ID token.");
        }
        return payload;
    } catch (GeneralSecurityException e) {
        System.out.println("Security issue: " + e.getLocalizedMessage());
    } catch (IOException e) {
        System.out.println("Network problem: " + e.getLocalizedMessage());
    } catch (IllegalArgumentException e) {
        System.out.println("Token Problem: " + e.getLocalizedMessage());
    } catch (Exception e) {
        System.out.println("Exception: " + e.getLocalizedMessage());
    }

    return null;
}