Java Examples for com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier
The following java examples will help you to understand the usage of com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier. These source code samples are taken from different open source projects.
Example 1
| Project: mobile-android-master File: AccountTroveboxApiTest.java View source code |
public void testSignInViaGoogle() throws ClientProtocolException, IllegalStateException, IOException, JSONException, UserRecoverableAuthException, GoogleAuthException, GeneralSecurityException {
// how to setup environment
// http://android-developers.blogspot.in/2013/01/verifying-back-end-calls-from-android.html
String[] names = getAccountNames();
assertTrue(names != null && names.length > 0);
String accountName = names[0];
String audience = CommonUtils.getStringResource(R.string.google_auth_server_client_id);
String SCOPE = "audience:server:client_id:" + audience;
String tokenString = GoogleAuthUtil.getToken(getContext(), accountName, SCOPE);
// token verification part, this should be done on server side
GoogleIdTokenVerifier mVerifier;
JsonFactory mJFactory;
NetHttpTransport transport = new NetHttpTransport();
mJFactory = new GsonFactory();
mVerifier = new GoogleIdTokenVerifier(transport, mJFactory);
GoogleIdToken token = GoogleIdToken.parse(mJFactory, tokenString);
assertTrue(mVerifier.verify(token));
GoogleIdToken.Payload tempPayload = token.getPayload();
assertTrue(tempPayload.getAudience().equals(audience));
assertNotNull(tempPayload.getEmail());
// end of token verification part
AccountTroveboxResponse response = mApi.signInViaGoogle(tokenString);
assertNotNull(response);
assertTrue(response.isSuccess());
Credentials[] credentials = response.getCredentials();
assertNotNull(credentials);
assertTrue(credentials.length > 0);
Credentials c = credentials[0];
checkoAuthString(c.getoAuthConsumerKey());
checkoAuthString(c.getoAuthConsumerSecret());
checkoAuthString(c.getoAuthToken());
checkoAuthString(c.getoAuthConsumerSecret());
}Example 2
| Project: ASSISTmentsDirect-master File: SignInWithGoogle.java View source code |
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String idTokenString = req.getParameter("idtoken");
HttpTransport transport = new NetHttpTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory).setAudience(Arrays.asList(CLIENT_ID)).build();
GoogleIdToken idToken = null;
try {
idToken = verifier.verify(idTokenString);
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
if (idToken != null) {
Payload payload = idToken.getPayload();
String firstName = new String();
if (payload.getUnknownKeys().get("given_name") != null) {
firstName = payload.getUnknownKeys().get("given_name").toString();
}
String lastName = new String();
if (payload.getUnknownKeys().get("family_name") != null) {
lastName = payload.getUnknownKeys().get("family_name").toString();
}
String userId = payload.getSubject();
String email = payload.getEmail();
String assignmentRef = req.getParameter("assignment_ref");
ExternalAssignmentDAO assignmentDAO = new ExternalAssignmentDAO(LiteUtility.PARTNER_REF);
ExternalAssignment assignment = assignmentDAO.findByExternalRef(assignmentRef);
HttpSession reqSession = req.getSession();
//if teacher signs in with google
if (req.getParameter("teacher") != null) {
String problemSet = (String) reqSession.getAttribute("problem_set");
String shareLinkRef = (String) reqSession.getAttribute("share_link_ref");
String problemSetName = (String) reqSession.getAttribute("problem_set_name");
String problemSetStr = (String) reqSession.getAttribute("problem_set_str");
String thirdPartyId = "google_" + userId;
String studentClassPartnerRef = thirdPartyId;
String displayName = firstName + " " + lastName;
User teacher = LiteUtility.populateTeacherInfo(firstName, lastName, displayName);
List<String> teacherRefAccessToken = null;
try {
teacherRefAccessToken = LiteUtility.transferUser(teacher, thirdPartyId);
} catch (TransferUserException e) {
String errorMessage = e.getMessage();
String instruction = "The server seems to be unstable at this moment. Please take a break and try it again later.";
LiteUtility.directToErrorPage(errorMessage, instruction, req, resp);
return;
}
String teacherRef = teacherRefAccessToken.get(0);
String teacherToken = teacherRefAccessToken.get(1);
String studentClassName = "Class";
// create a class for this teacher
String studentClassRef = LiteUtility.createClass(studentClassName, teacherToken, studentClassPartnerRef);
// create class assignment
// String problemSetID = Utility.decodeProblemSetString(problemSet);
assignmentRef = LiteUtility.createAssignment(problemSet, studentClassRef, teacherToken, thirdPartyId);
Base32 base32 = new Base32();
String reportRef = base32.encodeAsString(assignmentRef.getBytes());
String teacherLink = LiteUtility.REPORT_LINK_PREFIX + "/" + reportRef;
String studentLink = LiteUtility.ASSIGNMENT_LINK_PREFIX + "/" + assignmentRef;
//store the association between share link and user
ExternalShareLink shareLink = new ExternalShareLink(LiteUtility.PARTNER_REF);
shareLink.setAssistmentsExternalRefernce(shareLinkRef);
shareLink.setAssistmentsAccessToken(teacherToken);
shareLink.setPartnerExternalReference(thirdPartyId);
shareLink.setNote(assignmentRef);
ExternalShareLinkDAO shareLinkDAO = new ExternalShareLinkDAO(LiteUtility.PARTNER_REF);
shareLinkDAO.save(shareLink);
reqSession.setAttribute("student_link", studentLink);
reqSession.setAttribute("teacher_link", teacherLink);
// reqSession.setAttribute("problem_set_name", problemSetName);
reqSession.setAttribute("user", teacherRef);
reqSession.setAttribute("email", thirdPartyId);
reqSession.setAttribute("from", "google");
reqSession.setAttribute("submit", "Sign in with Google");
resp.getWriter().print(req.getContextPath() + "/teacher");
return;
}
//if a student signs in with google
if (assignment != null) {
// create the student account
String userName = firstName + "_" + lastName;
User student = LiteUtility.populateStudentInfo(firstName, lastName, userName);
String partnerExternalRef = "google_student" + userId;
List<String> studentRefAccessToken = null;
try {
studentRefAccessToken = LiteUtility.transferStudent(student, partnerExternalRef);
} catch (TransferUserException e) {
String errorMessage = e.getMessage();
String instruction = "The server seems to be unstable at this moment. Please take a break and try it again later.";
LiteUtility.directToErrorPage(errorMessage, instruction, req, resp);
return;
}
String studentRef = studentRefAccessToken.get(0);
String studentToken = studentRefAccessToken.get(1);
String token = assignment.getAssistmentsAccessToken();
ExternalStudentClassDAO classDAO = new ExternalStudentClassDAO(LiteUtility.PARTNER_REF);
ExternalStudentClass esc = classDAO.findByAccessToken(token);
String studentClassRef = esc.getAssistmentsExternalRefernce();
//enroll student into the class
StudentClassController.enrollStudent(studentClassRef, studentRef, LiteUtility.PARTNER_REF, studentToken);
//save url to student report
String studentReportURL = Constants.ASSISSTments_URL + "external_tutor/student_class/report?partner_id=" + LiteUtility.PARTNER_ID + "&class_ref=" + studentClassRef + "&assignment_ref=" + assignmentRef;
ServletContext context = getServletContext();
String studentReportId = LiteUtility.generateStudentReportId(studentRef, assignmentRef);
context.setAttribute(studentReportId, studentReportURL);
String onExit = LiteUtility.generateStudentReportURL(studentRef, assignmentRef);
// String onExit = "http://csta14-5.cs.wpi.edu:8080/connector/studentReport";
//have to encode url twice
onExit = URLEncoder.encode(onExit, "UTF-8");
onExit = URLEncoder.encode(onExit, "UTF-8");
Response res = AssignmentController.getAssignment(assignmentRef, LiteUtility.PARTNER_REF, studentToken, onExit);
if (res.getHttpCode() == 200) {
JsonElement jElement = new JsonParser().parse(res.getContent());
JsonObject jObject = jElement.getAsJsonObject();
String tutorURL = jObject.get("handler").getAsString();
// String onFailure = "assistments.org";
String loginURL = Constants.LOGIN_URL;
String addressToGo = String.format("%1$s?partner=%2$s&access=%3$s&on_success=%4$s&on_failure=%5$s", loginURL, LiteUtility.PARTNER_REF, studentToken, tutorURL, LiteUtility.LOGIN_FAILURE);
resp.getWriter().print(addressToGo);
} else {
String errorMessage = res.getContent();
String instruction = "The server seems to be unstable at this moment. Please take a break and try it again later.";
LiteUtility.directToErrorPage(errorMessage, instruction, req, resp);
return;
}
}
} else {
System.out.println("Invalid ID token");
}
}Example 3
| Project: wonder-master File: ERGoogleSignInUtilities.java View source code |
public static GoogleIdTokenVerifier googleVerifier() { HttpTransport transport = new NetHttpTransport(); JsonFactory jsonFactory = new GsonFactory(); return new GoogleIdTokenVerifier.Builder(transport, jsonFactory).setAudience(clientIDs()).build(); }
Example 4
| Project: molgenis-master File: GoogleAuthenticationProcessingFilter.java View source code |
private GoogleIdToken verify(String idTokenString) throws GeneralSecurityException, IOException {
List<String> audience = Collections.singletonList(appSettings.getGoogleAppClientId());
GoogleIdTokenVerifier googleIdTokenVerifier = new GoogleIdTokenVerifier.Builder(googlePublicKeysManager).setAudience(audience).build();
return googleIdTokenVerifier.verify(idTokenString);
}