6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster/**
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster *
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * Copyright (c) 2007 Sun Microsystems Inc. All Rights Reserved
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster *
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * The contents of this file are subject to the terms
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * of the Common Development and Distribution License
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * (the License). You may not use this file except in
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * compliance with the License.
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster *
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * You can obtain a copy of the License at
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * opensso/legal/CDDLv1.0.txt
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * See the License for the specific language governing
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * permission and limitations under the License.
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * *
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * When distributing Covered Code, include this CDDL
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * Header Notice in each file and include the License file
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * at opensso/legal/CDDLv1.0.txt.
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * If applicable, add the following below the CDDL Header,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * with the fields enclosed by brackets [] replaced by
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * your own identifying information:
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster *
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster * $Id: XACMLRequestProcessorTest.java,v 1.4 2008/06/25 05:50:18 qcheng Exp $
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster *
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster */
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterpackage com.sun.identity.xacml.client;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.iplanet.sso.SSOToken;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.saml2.common.SAML2Exception;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.shared.test.UnitTestBase;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.xacml.client.XACMLRequestProcessor;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.xacml.common.XACMLConstants;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.xacml.common.XACMLException;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.xacml.context.ContextFactory;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.xacml.context.Action;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.xacml.context.Attribute;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.xacml.context.Environment;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.xacml.context.Request;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.xacml.context.Resource;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.xacml.context.Response;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport com.sun.identity.xacml.context.Subject;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport java.net.URI;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport java.net.URISyntaxException;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport java.util.ArrayList;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport java.util.List;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport java.util.logging.Level;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport org.testng.annotations.Test;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterimport org.testng.annotations.Parameters;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Fosterpublic class XACMLRequestProcessorTest extends UnitTestBase {
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster public XACMLRequestProcessorTest() {
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster super("OpenFed-xacml-XACMLRequestProcessorTest");
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster }
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //@Test(groups={"xacml"}, expectedExceptions={XACMLException.class})
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //@Test(groups={"xacml"})
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster public void testGetInstance() throws XACMLException {
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster entering("testGetInstance()", null);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster log(Level.INFO,"testGetInstance()","\n");
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster XACMLRequestProcessor.getInstance();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster log(Level.INFO,"testGetInstance()","\n");
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster exiting("testGetInstance()");
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster }
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster @Test(groups={"xacml"})
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster @Parameters({"pdp.entityId", "pep.entityId",
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster "login.id", "login.password",
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster "subject.id", "subject.id.datatype",
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster "subject.category",
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster "resource.id", "resource.id.datatype",
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster "resource.servicename", "resource.servicename.datatype",
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster "action.id", "action.id.datatype"})
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster public void testProcessRequest(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String pdpEntityId, String pepEntityId,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String loginId, String loginPassword,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String subjectId, String subjectIdType,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String subjectCategory,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String resourceId, String resourceIdType,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String serviceName, String serviceNameType,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String actionId, String actionIdType)
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster throws XACMLException, SAML2Exception,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster URISyntaxException, Exception {
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster if ((subjectId == null) || (subjectId.length() == 0)) {
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster SSOToken ssoToken
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster = TokenUtils.getSessionToken("/", loginId, loginPassword);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster subjectId = ssoToken.getTokenID().toString();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster subjectIdType = XACMLConstants.OPENSSO_SESSION_ID;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster }
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster Request xacmlRequest = createSampleXacmlRequest(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster subjectId, subjectIdType,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster subjectCategory,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster resourceId, resourceIdType,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster serviceName, serviceNameType,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster actionId, actionIdType);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster log(Level.INFO,"testProcessRequest():xacmlRequest:\n",
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster xacmlRequest.toXMLString(true, true));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster Response xacmlResponse = XACMLRequestProcessor.getInstance()
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster .processRequest(xacmlRequest, pdpEntityId, pepEntityId);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster log(Level.INFO,"testProcessRequest():xacmlResponse:\n",
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster xacmlResponse.toXMLString(true, true));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster }
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster private Request createSampleXacmlRequest(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String subjectId, String subjectIdType,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String subjectCategory,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String resourceId, String resourceIdType,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String serviceName, String serviceNameType,
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster String actionId, String actionIdType)
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster throws XACMLException, URISyntaxException {
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster Request request = ContextFactory.getInstance().createRequest();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //Subject1, access-subject
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster Subject subject1 = ContextFactory.getInstance().createSubject();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //supported category for id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //urn:oasis:names:tc:xacml:1.0:subject-category:access-subject
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster subject1.setSubjectCategory(new URI(subjectCategory));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster Attribute attribute = ContextFactory.getInstance().createAttribute();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //key attribute id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //urn:oasis:names:tc:xacml:1.0:subject:subject-id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setAttributeId(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster new URI(XACMLConstants.SUBJECT_ID));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //supported data type for id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //urn:oasis:names:tc:xacml:1.0:data-type:x500Name
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //urn:sun:names:xacml:2.0:data-type:opensso-session-id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //urn:sun:names:xacml:2.0:data-type:openfm-sp-nameid
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setDataType(new URI(subjectIdType));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setIssuer("sampleIssuer1");
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //set values
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster List<String> valueList = new ArrayList<String>();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster valueList.add(subjectId);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setAttributeStringValues(valueList);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster List<Attribute> attributeList = new ArrayList<Attribute>();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attributeList.add(attribute);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster subject1.setAttributes(attributeList);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //Subject2, intermediary-subject
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster Subject subject2 = ContextFactory.getInstance().createSubject();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster subject2.setSubjectCategory(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster new URI(XACMLConstants.INTERMEDIARY_SUBJECT));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute = ContextFactory.getInstance().createAttribute();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setAttributeId(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster new URI(XACMLConstants.SUBJECT_ID));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //supported data type for id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //urn:oasis:names:tc:xacml:1.0:data-type:x500Name
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //urn:sun:names:xacml:2.0:data-type:opensso-session-id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //urn:sun:names:xacml:2.0:data-type:openfm-sp-nameid
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setDataType(new URI(subjectIdType));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setIssuer("sampleIssuer2");
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //set values
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster valueList = new ArrayList<String>();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster valueList.add(subjectId);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setAttributeStringValues(valueList);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attributeList = new ArrayList<Attribute>();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attributeList.add(attribute);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster subject2.setAttributes(attributeList);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //set subjects in request
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster List<Subject> subjectList = new ArrayList<Subject>();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster subjectList.add(subject1);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster subjectList.add(subject2);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster request.setSubjects(subjectList);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //Resource
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster Resource resource = ContextFactory.getInstance().createResource();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //resoruce-id attribute
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute = ContextFactory.getInstance().createAttribute();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //key attribute id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //urn:oasis:names:tc:xacml:1.0:resource:resource-id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setAttributeId(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster new URI(XACMLConstants.RESOURCE_ID));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //supported data type
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //http://www.w3.org/2001/XMLSchema#string
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setDataType(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster new URI(resourceIdType));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setIssuer("sampleIssuer3");
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //set values
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster valueList = new ArrayList<String>();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster valueList.add(resourceId);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setAttributeStringValues(valueList);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attributeList = new ArrayList<Attribute>();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attributeList.add(attribute);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //serviceName attribute
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute = ContextFactory.getInstance().createAttribute();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //additional attribute id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //urn:sun:names:xacml:2.0:resource:target-service
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setAttributeId(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster new URI(XACMLConstants.TARGET_SERVICE));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //supported data type
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //http://www.w3.org/2001/XMLSchema#string
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setDataType(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster new URI(serviceNameType));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setIssuer("sampleIssuer3");
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //set values
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster valueList = new ArrayList<String>();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster valueList.add(serviceName);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setAttributeStringValues(valueList);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attributeList.add(attribute);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster resource.setAttributes(attributeList);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster List<Resource> resourceList = new ArrayList<Resource>();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster resourceList.add(resource);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster request.setResources(resourceList);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //Action
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster Action action = ContextFactory.getInstance().createAction();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute = ContextFactory.getInstance().createAttribute();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //key attribute id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //urn:oasis:names:tc:xacml:1.0:action:action-id
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setAttributeId(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster new URI(XACMLConstants.ACTION_ID));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //supported data type
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //http://www.w3.org/2001/XMLSchema#string
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setDataType(
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster new URI(actionIdType));
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setIssuer("sampleIssuer5");
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster valueList = new ArrayList<String>();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster valueList.add(actionId);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attribute.setAttributeStringValues(valueList);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attributeList = new ArrayList<Attribute>();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster attributeList.add(attribute);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster action.setAttributes(attributeList);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster request.setAction(action);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster //Enviornment
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster Environment environment =
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster ContextFactory.getInstance().createEnvironment();
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster request.setEnvironment(environment);
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster return request;
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster }
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster
6d96e3809a612651f813d4c475c6590d0c602d94Allan Foster}