package se.ce.gitapp; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import java.util.logging.Logger; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.identitytoolkit.GitkitClient; import com.google.identitytoolkit.GitkitClientException; import com.google.identitytoolkit.GitkitUser; @SuppressWarnings("serial") public class SignInServlet extends HttpServlet { private static final Logger log = Logger.getLogger(SignInServlet.class.getName()); private GitkitClient gitkitClient; private Properties properties = new Properties(); @Override public void init(ServletConfig config) throws ServletException { ServletContext context = config.getServletContext(); try { InputStream stream = context.getResourceAsStream("/WEB-INF/gitapp.properties"); properties.load(stream); String googleClientId = properties.getProperty("googleClientId"); String serviceAccountEmail = properties.getProperty("serviceAccountEmail"); log.info("Client id:" + googleClientId + "\nService Email:" + serviceAccountEmail); InputStream keyStream = new FileInputStream(context.getRealPath("/WEB-INF/git-app-b70e81cca2b3.p12")); log.info("Getting p12-file " + keyStream.available() + "b"); gitkitClient = GitkitClient .newBuilder() .setGoogleClientId(googleClientId) .setServiceAccountEmail(serviceAccountEmail) .setKeyStream(keyStream) .setWidgetUrl("http://git-app.appspot.com/widget.jsp") .setCookieName("gtoken") .build(); } catch (IOException e) { e.printStackTrace(); } super.init(config); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException { GitkitUser gitkitUser; try { gitkitUser = gitkitClient.validateTokenInRequest(request); if (gitkitUser != null) resp.getWriter().write( "Welcome single user back!<br><br> Email: " + gitkitUser.getEmail() + "<br> Id: " + gitkitUser.getLocalId() + "<br> Provider: " + gitkitUser.getCurrentProvider()); else resp.getWriter().write("Ej inloggad!"); // Download all accounts from Google Identity Toolkit // Iterator<GitkitUser> userIterator = gitkitClient.getAllUsers(); // while (userIterator.hasNext()) { // GitkitUser user = userIterator.next(); // log.info("Welcome back!<br><br> Email: " + user.getEmail() + // "<br> Id: " + user.getLocalId() + "<br> Provider: " + // user.getCurrentProvider()); // } } catch (GitkitClientException e2) { e2.printStackTrace(resp.getWriter()); } catch (NoSuchMethodError e) { e.printStackTrace(resp.getWriter()); } } }