Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.lanastara.gtd.google; import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken; import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.Arrays; import java.util.logging.Level; import java.util.logging.Logger; import org.restlet.Context; import org.restlet.Request; import org.restlet.Response; import org.restlet.data.Cookie; import org.restlet.security.Authenticator; import org.restlet.util.Series; import org.restlet.data.Status; import org.restlet.security.User; /** * * @author fritz */ public class GoogleAuthenticator extends Authenticator { public GoogleAuthenticator(Context context) { super(context); } @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(); 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; } }