Package com.google.step2.example.provider.servlet

Source Code of com.google.step2.example.provider.servlet.DummyOpenIDServlet

package com.google.step2.example.provider.servlet;

import com.google.step2.Step2;
import com.google.step2.hybrid.HybridOauthResponse;
import com.google.step2.openid.ax2.FetchResponse2;
import com.google.step2.servlet.InjectableServlet;

import org.openid4java.message.AuthSuccess;
import org.openid4java.message.Message;
import org.openid4java.message.MessageException;
import org.openid4java.message.ParameterList;
import org.openid4java.server.ServerManager;

import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class DummyOpenIDServlet extends InjectableServlet {
  // instantiate a ServerManager object
  ServerManager manager = new ServerManager();

  @Override
  public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws IOException, ServletException {
    doPost(request, response);
  }

  @Override
  public void doPost(HttpServletRequest httpReq, HttpServletResponse httpResp)
      throws IOException, ServletException {
    String endpoint = httpReq.getScheme() + "://" + httpReq.getServerName() +
      ":" + httpReq.getServerPort() + "/step2-example-provider/";
    manager.setOPEndpointUrl(endpoint);

    HttpSession session = httpReq.getSession();
    // extract the parameters from the request
    ParameterList requestParams;
    if ("complete".equals(httpReq.getParameter("_action"))) {
      requestParams = (ParameterList) session.getAttribute("parameterlist");
    } else {
      requestParams = new ParameterList(httpReq.getParameterMap());
    }

    String mode = requestParams.getParameterValue("openid.mode");
    StringBuffer responseText = new StringBuffer();
    Message responseMessage;

    if ("associate".equals(mode)) {
      // --- process an association request ---
      responseMessage = manager.associationResponse(requestParams);
      responseText.append(responseMessage.keyValueFormEncoding());
    } else if ("checkid_setup".equals(mode) ||
        "checkid_immediate".equals(mode)) {

      Boolean authenticatedAndApproved = Boolean.FALSE;
      if (session.getAttribute("authenticatedAndApproved") != null) {
        authenticatedAndApproved =
          (Boolean) session.getAttribute("authenticatedAndApproved");
      }

      if (!authenticatedAndApproved) {
        // Interact with the user and obtain data needed to continue
        session.setAttribute("parameterlist", requestParams);
        httpResp.sendRedirect("authorize");
        return;
      }

      String userId = (String) session.getAttribute("openid.claimed_id");
      String userClaimedId = (String) session.getAttribute("openid.identity");
      // Remove the parameterlist so this provider can accept any request
      session.removeAttribute("parameterlist");
      // Makes you authorize each and every time
      session.setAttribute("authenticatedAndApproved", Boolean.FALSE);

      // Process an authorization event
      responseMessage = manager.authResponse(requestParams, userId,
          userClaimedId, authenticatedAndApproved.booleanValue());

      if (responseMessage instanceof AuthSuccess) {
        // Try adding an AX Fetch Response
        String email = (String) session.getAttribute("email");
        FetchResponse2 fetchResponse = new FetchResponse2();
        try {
          if (email != null) {
            fetchResponse.addAttribute(Step2.AxSchema.EMAIL.getShortName(),
                Step2.AxSchema.EMAIL.getUri(), email);
          }
          String country = (String) session.getAttribute("country");
          if (country != null) {
            fetchResponse.addAttribute(Step2.AxSchema.COUNTRY.getShortName(),
                Step2.AxSchema.COUNTRY.getUri(), country);
          }
          responseMessage.addExtension(fetchResponse);
        } catch (MessageException e) {
          throw new ServletException(e);
        }

        // Handle any OAuth Request tokens
        String oauthRequestToken =
          (String) session.getAttribute("oauth_request_token");
        if (oauthRequestToken != null) {
          // This is a request token response
          HybridOauthResponse hybridResponse =
              new HybridOauthResponse(oauthRequestToken, "");
          try {
            responseMessage.addExtension(hybridResponse);
          } catch (MessageException e) {
            throw new ServletException(e);
          }
        }

        httpResp.sendRedirect(
            ((AuthSuccess) responseMessage).getDestinationUrl(true));
        return;
      }
      responseText.append("<pre>");
      responseText.append(responseMessage.keyValueFormEncoding());
      responseText.append("</pre>");
    }
    OutputStream os = httpResp.getOutputStream();
    os.write(responseText.toString().getBytes());
    os.close();
  }
}
TOP

Related Classes of com.google.step2.example.provider.servlet.DummyOpenIDServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.