XacmlRequest.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.utils.xacml;
- import java.util.ArrayList;
- import java.util.List;
- import org.herasaf.xacml.core.context.impl.ActionType;
- import org.herasaf.xacml.core.context.impl.AttributeType;
- import org.herasaf.xacml.core.context.impl.AttributeValueType;
- import org.herasaf.xacml.core.context.impl.EnvironmentType;
- import org.herasaf.xacml.core.context.impl.ObjectFactory;
- import org.herasaf.xacml.core.context.impl.RequestType;
- import org.herasaf.xacml.core.context.impl.ResourceType;
- import org.herasaf.xacml.core.context.impl.SubjectType;
- import org.herasaf.xacml.core.dataTypeAttribute.impl.StringDataTypeAttribute;
- /**
- * XacmlRequest
- *
- * @author Andrea Poli (poli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class XacmlRequest {
- private ObjectFactory factory;
- private RequestType xacmlRequest;
-
- public RequestType getXacmlRequest() {
- return this.xacmlRequest;
- }
- public XacmlRequest(){
- this.factory = new ObjectFactory();
- this.xacmlRequest = this.factory.createRequestType();
- MarshallUtilities.runInitializers();
- }
-
- public void createAction(){
- if(this.xacmlRequest.getAction()==null){
- ActionType action = this.factory.createActionType();
- this.xacmlRequest.setAction(action);
- }
- }
- public void addAction(String azione){
- this.addActionAttribute("urn:oasis:names:tc:xacml:1.0:action:action-id", azione);
- }
- public void addActionAttribute(String attributeName, String attributeValue){
- this.addActionAttribute(createAttribute(attributeName, attributeValue));
- }
- public void addActionAttribute(String attributeName, List<String> attributeValues){
- this.addActionAttribute(createAttribute(attributeName, attributeValues));
- }
- public void addActionAttribute(AttributeType attribute){
- this.createAction();
- this.xacmlRequest.getAction().getAttributes().add(attribute);
- }
-
-
- public void addSubject(String subject){
- this.addSubjectAttribute("urn:oasis:names:tc:xacml:1.0:subject:subject-id", subject);
- }
- public void createSubject(){
- if(this.xacmlRequest.getSubjects().isEmpty()){
- SubjectType subject = this.factory.createSubjectType();
- this.xacmlRequest.getSubjects().add(subject);
- }
- }
- public void addSubjectAttribute(String attributeName, String attributeValue){
- this.addSubjectAttribute(createAttribute(attributeName, attributeValue));
- }
- public void addSubjectAttribute(String attributeName, List<String> attributeValues){
- this.addSubjectAttribute(createAttribute(attributeName, attributeValues));
- }
- public void addSubjectAttribute(AttributeType attribute){
- createSubject();
- this.xacmlRequest.getSubjects().get(0).getAttributes().add(attribute);
- }
-
-
- public void createEnvironment(){
- if(this.xacmlRequest.getEnvironment()==null){
- EnvironmentType action = this.factory.createEnvironmentType();
- this.xacmlRequest.setEnvironment(action);
- }
- }
- public void addEnvironmentAttribute(String attributeName, String attributeValue){
- this.addEnvironmentAttribute(createAttribute(attributeName, attributeValue));
- }
- public void addEnvironmentAttribute(String attributeName, List<String> attributeValues){
- this.addEnvironmentAttribute(createAttribute(attributeName, attributeValues));
- }
- public void addEnvironmentAttribute(AttributeType attribute){
- createEnvironment();
- this.xacmlRequest.getEnvironment().getAttributes().add(attribute);
- }
-
-
-
- public void createResource(){
- if(this.xacmlRequest.getResources().isEmpty()){
- ResourceType resource = this.factory.createResourceType();
- this.xacmlRequest.getResources().add(resource);
- }
- }
- public void addResourceAttribute(String attributeName, String attributeValue){
- this.addResourceAttribute(createAttribute(attributeName, attributeValue));
- }
- public void addResourceAttribute(String attributeName, List<String> attributeValues){
- this.addResourceAttribute(createAttribute(attributeName, attributeValues));
- }
- public void addResourceAttribute(AttributeType attribute){
- createResource();
- this.xacmlRequest.getResources().get(0).getAttributes().add(attribute);
- }
-
-
-
- private AttributeType createAttribute(String name, List<String> values) {
- AttributeType attribute = this.factory.createAttributeType();
-
- for(String value: values) {
- AttributeValueType value1 = new AttributeValueType();
- value1.getContent().add(value);
- attribute.getAttributeValues().add(value1);
- }
- attribute.setAttributeId(name);
- attribute.setDataType(new StringDataTypeAttribute());
- return attribute;
-
- }
- private AttributeType createAttribute(String name, String value) {
- List<String> lst = new ArrayList<>();
- lst.add(value);
- return createAttribute(name, lst);
-
- }
- }