/* * Copyright 2006-2008 Sxip Identity Corporation */ package org.openid4java.message; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openid4java.OpenIDException; /** * VerifyRequest is a AuthSuccess with the openid.mode * switched to check_authentication. * * @author Marius Scurtescu, Johnny Bufu */ public class VerifyRequest extends AuthSuccess { private static Log _log = LogFactory.getLog(VerifyRequest.class); private static final boolean DEBUG = _log.isDebugEnabled(); public static final String MODE_CHKAUTH = "check_authentication"; protected VerifyRequest(AuthSuccess authResp) { super(convertAuthSuccessParams(authResp)); } private static ParameterList convertAuthSuccessParams(AuthSuccess authResp) { ParameterList params = new ParameterList(authResp.getParameterMap()); params.set(new Parameter("openid.mode", MODE_CHKAUTH)); return params; } protected VerifyRequest(ParameterList params) { super(params); } public static VerifyRequest createVerifyRequest(AuthSuccess authResp) throws MessageException { VerifyRequest req = new VerifyRequest(authResp); req.validate(); if (DEBUG) _log.debug("Created verification request " + "from a positive auth response:\n" + req.keyValueFormEncoding()); return req; } public static VerifyRequest createVerifyRequest(ParameterList params) throws MessageException { VerifyRequest req = new VerifyRequest(params); req.validate(); if (DEBUG) _log.debug("Created verification request:\n" + req.keyValueFormEncoding()); return req; } public String getHandle() { return getParameterValue("openid.assoc_handle"); } public String getInvalidateHandle() { return getParameterValue("openid.invalidate_handle"); } public void validate() throws MessageException { if (! MODE_CHKAUTH.equals(getParameterValue("openid.mode"))) { throw new MessageException( "Invalid openid.mode in verification request: " + getParameterValue("openid.mode"), OpenIDException.VERIFY_ERROR); } set("openid.mode", MODE_IDRES); if (DEBUG) _log.debug("Delegating verification request validity check " + "to auth response..."); super.validate(); set("openid.mode", MODE_CHKAUTH); } }