package net.unicon.idp.authn.provider.extra; import net.shibboleth.idp.authn.ExternalAuthentication; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; /** * Generates a querystring parameter containing the entityId * @author chasegawa@unicon.net * @author jgasper@unicon.net */ public class EntityIdParameterBuilder implements IParameterBuilder { private Logger logger = LoggerFactory.getLogger(EntityIdParameterBuilder.class); @Override public String getParameterString(final HttpServletRequest request) { return getParameterString(request, true); } public String getParameterString(final HttpServletRequest request, final boolean encode) { final String relayingPartyId = request.getAttribute(ExternalAuthentication.RELYING_PARTY_PARAM).toString(); String rpId = "error-encoding-rpid"; if (encode == true) { try { rpId = URLEncoder.encode(relayingPartyId, "UTF-8"); } catch (UnsupportedEncodingException e) { logger.error("Error encoding the relying party id.", e); } } else { rpId = relayingPartyId; } return "&entityId=" + rpId; } @Override public int hashCode() { return this.getClass().hashCode(); } @Override public boolean equals(final Object obj) { return obj instanceof EntityIdParameterBuilder; } }