this.tokenParser = (jsonFactory, token) -> { try { return GoogleIdToken.parse(jsonFactory, token); } catch (IOException e) { throw new SecurityException("Failed to parse Google token", e);
/** * Verifies that the given ID token is valid using {@link #verify(GoogleIdToken)} and returns the * ID token if succeeded. * * @param idTokenString Google ID token string * @return Google ID token if verified successfully or {@code null} if failed * @since 1.9 */ public GoogleIdToken verify(String idTokenString) throws GeneralSecurityException, IOException { GoogleIdToken idToken = GoogleIdToken.parse(getJsonFactory(), idTokenString); return verify(idToken) ? idToken : null; }
/** * {@link Beta} <br/> * Parses using {@link GoogleIdToken#parse(JsonFactory, String)} based on the {@link #getFactory() * JSON factory} and {@link #getIdToken() ID token}. */ @Beta public GoogleIdToken parseIdToken() throws IOException { return GoogleIdToken.parse(getFactory(), getIdToken()); }
public Optional<OAuthDetails> checkAuthHeader(String authToken) { try { GoogleIdToken token = GoogleIdToken.parse(jsonFactory, authToken); if (tokenVerifier.verify(token)) { GoogleIdToken.Payload payload = token.getPayload(); if (!payload.getAudience().equals(googleOAuthWebClientId)) { return Optional.absent(); } if (!googleAuthClientIds.contains(payload.getAuthorizedParty())) return Optional.absent(); return Optional.of(new OAuthDetails(payload.getSubject(), payload.getEmail())); } } catch (GeneralSecurityException | IOException e) { Log.debug("oauth failed", e); } return Optional.absent(); }
public GoogleIdToken.Payload parse(String tokenString) { GoogleIdToken.Payload payload = null; try { GoogleIdToken token = GoogleIdToken.parse(jsonFactory, tokenString); if (verifier.verify(token)) { GoogleIdToken.Payload tempPayload = token.getPayload(); if (!tempPayload.getAudience().equals(audience)) problem = "Audience mismatch, " + audience + " != " + tempPayload.getAudience(); else if (!clientIDs.contains(tempPayload.getAuthorizedParty())) problem = "Client ID mismatch"; else payload = tempPayload; } } catch (GeneralSecurityException e) { problem = "Security issue: " + e.getLocalizedMessage(); } catch (IOException e) { problem = "Network problem: " + e.getLocalizedMessage(); } return payload; }