package org.kvj.lima1.gae.sync; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.amber.oauth2.as.issuer.MD5Generator; import org.apache.amber.oauth2.as.issuer.OAuthIssuer; import org.apache.amber.oauth2.as.issuer.OAuthIssuerImpl; import org.apache.amber.oauth2.as.request.OAuthAuthzRequest; import org.apache.amber.oauth2.as.request.OAuthRequest; import org.apache.amber.oauth2.as.response.OAuthASResponse; import org.apache.amber.oauth2.common.OAuth; import org.apache.amber.oauth2.common.exception.OAuthProblemException; import org.apache.amber.oauth2.common.message.OAuthResponse; import org.apache.amber.oauth2.common.message.types.ResponseType; import org.apache.amber.oauth2.common.utils.OAuthUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class OAuthAuthServlet extends HttpServlet { OAuthIssuer oauthIssuer = null; private Logger log = LoggerFactory.getLogger(OAuthAuthServlet.class); public OAuthAuthServlet() { oauthIssuer = new OAuthIssuerImpl(new MD5Generator()); } private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { try { OAuthAuthzRequest oauthRequest = new OAuthAuthzRequest(request); // some code .... String responseType = oauthRequest.getParam(OAuth.OAUTH_RESPONSE_TYPE); OAuthASResponse.OAuthAuthorizationResponseBuilder builder = OAuthASResponse .authorizationResponse(HttpServletResponse.SC_FOUND); if (responseType.equals(ResponseType.CODE.toString()) || responseType .equals(ResponseType.CODE_AND_TOKEN.toString())) { builder.setCode(oauthIssuer.authorizationCode()); } if (responseType.equals(ResponseType.TOKEN.toString()) || responseType .equals(ResponseType.CODE_AND_TOKEN.toString())) { builder.setAccessToken(oauthIssuer.accessToken()); builder.setExpiresIn(String.valueOf(3600)); } String redirectURI = oauthRequest.getParam(OAuth.OAUTH_REDIRECT_URI); // build OAuth response OAuthResponse resp = builder.location(redirectURI).buildQueryMessage(); response.sendRedirect(resp.getLocationUri()); // if something goes wrong } catch (OAuthProblemException ex) { String redirectUri = ex.getRedirectUri(); if (OAuthUtils.isEmpty(redirectUri)) { throw new Exception("No redirect URI"); } final OAuthResponse resp = OAuthASResponse .errorResponse(HttpServletResponse.SC_FOUND).error(ex) .location(redirectUri).buildQueryMessage(); response.sendRedirect(resp.getLocationUri()); } super.doGet(request, response); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } } }