All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openid4java.message.pape.PapeRequest Maven / Gradle / Ivy

There is a newer version: 1.0.0.0
Show newest version
/*
 * Copyright 2006-2008 Sxip Identity Corporation
 */

package org.openid4java.message.pape;

import org.openid4java.message.MessageException;
import org.openid4java.message.Parameter;
import org.openid4java.message.ParameterList;
import org.openid4java.OpenIDException;

import java.util.*;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Implements the extension for OpenID Provider Authentication Policy requests.
 *
 * @see PapeMessage Message
 * @author Marius Scurtescu, Johnny Bufu
 */
public class PapeRequest extends PapeMessage
{
    private static Log _log = LogFactory.getLog(PapeRequest.class);
    private static final boolean DEBUG = _log.isDebugEnabled();

    protected final static List PAPE_FIELDS = Arrays.asList( new String[] {
            "preferred_auth_policies", "preferred_auth_level_types", "max_auth_age"
    });

    /**
     * Constructs a Pape Request with an empty parameter list.
     */
    protected PapeRequest()
    {
        set("preferred_auth_policies", "");

        if (DEBUG) _log.debug("Created empty Pape request.");
    }

    /**
     * Constructs a Pape Request with an empty parameter list.
     */
    public static PapeRequest createPapeRequest()
    {
        return new PapeRequest();
    }

    /**
     * Constructs a PapeRequest from a parameter list.
     * 

* The parameter list can be extracted from a received message with the * getExtensionParams method of the Message class, and MUST NOT contain * the "openid.." prefix. */ protected PapeRequest(ParameterList params) { super(params); } /** * Constructs a PapeRequest from a parameter list. *

* The parameter list can be extracted from a received message with the * getExtensionParams method of the Message class, and MUST NOT contain * the "openid.." prefix. */ public static PapeRequest createPapeRequest(ParameterList params) throws MessageException { PapeRequest req = new PapeRequest(params); req.validate(); if (DEBUG) _log.debug("Created PAPE request from parameter list:\n" + params); return req; } /** * Gets the preferred_auth_policies parameter value. */ public String getPreferredAuthPolicies() { return getParameterValue("preferred_auth_policies"); } /** * Sets a new value for the preferred_auth_policies parameter. * * The previous value of the parameter will be owerwritten. * * @param policyUris Space separated list of authentication policy * URIs to be set. * @see #addPreferredAuthPolicy(String) */ public void setPreferredAuthPolicies(String policyUris) { // todo: enforce that policyUri is a valid URI? set("preferred_auth_policies", policyUris); } /** * Adds an authentication policy URI to the preferred_auth_policies * parameter. * * @param policyUri The authentication policy URI to be set. * @see #setPreferredAuthPolicies(String) */ public void addPreferredAuthPolicy(String policyUri) { // todo: check that policyUri isn't already in the list? String policies = getPreferredAuthPolicies(); if (policies == null || policies.length() == 0) setPreferredAuthPolicies(policyUri); else setPreferredAuthPolicies(policies + " " + policyUri); } /** * Gets a list with the preferred_auth_policies. An empty list is * returned if no authentication policies exist. * */ public List getPreferredAuthPoliciesList() { String policies = getParameterValue("preferred_auth_policies"); if (policies != null) return Arrays.asList(policies.split(" ")); else return new ArrayList(); } /** * Sets the max_auth_age parameter. * * @param seconds The number of seconds within which the OP is * requested to have actively authenticated the user. */ public void setMaxAuthAge(int seconds) { set("max_auth_age", Integer.toString(seconds)); } /** * Gets the max_auth_age parameter. * * @return The number of seconds within which the OP is * requested to have actively authenticated the user, * or -1 if max_auth_age is not present in the request. */ public int getMaxAuthAge() { String maxAuthAge = getParameterValue("max_auth_age"); if (maxAuthAge != null) return Integer.parseInt(maxAuthAge); else return -1; } /** * Checks the validity of the extension. *

* Used when constructing a extension from a parameter list. * * @throws MessageException if the PapeRequest is not valid. */ public void validate() throws MessageException { if (! _parameters.hasParameter("preferred_auth_policies")) { throw new MessageException( "preferred_auth_policies is required in a PAPE request.", OpenIDException.PAPE_ERROR); } Iterator it = _parameters.getParameters().iterator(); while (it.hasNext()) { String paramName = ((Parameter) it.next()).getKey(); if (! PAPE_FIELDS.contains(paramName) && ! paramName.startsWith(PapeMessage.AUTH_LEVEL_NS_PREFIX)) { throw new MessageException( "Invalid parameter name in PAPE request: " + paramName, OpenIDException.PAPE_ERROR); } } } public void addPreferredCustomAuthLevel(String authLevelTypeUri) { String alias = addAuthLevelExtension(authLevelTypeUri); String preferred = getParameterValue("preferred_auth_level_types"); set("preferred_auth_level_types", preferred == null ? alias : preferred + " " + alias); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy