blob: 28bf377f58a60ebc4f257385054ba52d44d08377 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.openaz.xacml.admin.util;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.apache.openaz.xacml.api.Identifier;
import org.apache.openaz.xacml.api.XACML3;
public class XACMLConstants {
public static final Set<Identifier> SUBJECT_CATEGORIES = new HashSet<Identifier>();
public static final Set<Identifier> ACTION_CATEGORIES = new HashSet<Identifier>();
public static final Set<Identifier> RESOURCE_CATEGORIES = new HashSet<Identifier>();
public static final Set<Identifier> ENVIRONMENT_CATEGORIES = new HashSet<Identifier>();
public static final Set<Identifier> CATEGORIES = new HashSet<Identifier>();
static {
SUBJECT_CATEGORIES.addAll(Arrays.asList(XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT,
XACML3.ID_SUBJECT_CATEGORY_CODEBASE,
XACML3.ID_SUBJECT_CATEGORY_INTERMEDIARY_SUBJECT,
XACML3.ID_SUBJECT_CATEGORY_RECIPIENT_SUBJECT,
XACML3.ID_SUBJECT_CATEGORY_REQUESTING_MACHINE)
);
ACTION_CATEGORIES.addAll(Arrays.asList(
XACML3.ID_ATTRIBUTE_CATEGORY_ACTION)
);
RESOURCE_CATEGORIES.addAll(Arrays.asList(
XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE)
);
ENVIRONMENT_CATEGORIES.addAll(Arrays.asList(
XACML3.ID_ATTRIBUTE_CATEGORY_ENVIRONMENT)
);
CATEGORIES.addAll(SUBJECT_CATEGORIES);
CATEGORIES.addAll(ACTION_CATEGORIES);
CATEGORIES.addAll(RESOURCE_CATEGORIES);
CATEGORIES.addAll(ENVIRONMENT_CATEGORIES);
}
public static final Set<Identifier> DATATYPES = new HashSet<Identifier>();
static {
DATATYPES.addAll(Arrays.asList(XACML3.ID_DATATYPE_STRING,
XACML3.ID_DATATYPE_BOOLEAN,
XACML3.ID_DATATYPE_INTEGER,
XACML3.ID_DATATYPE_DOUBLE,
XACML3.ID_DATATYPE_TIME,
XACML3.ID_DATATYPE_DATE,
XACML3.ID_DATATYPE_DATETIME,
XACML3.ID_DATATYPE_DAYTIMEDURATION,
XACML3.ID_DATATYPE_YEARMONTHDURATION,
XACML3.ID_DATATYPE_ANYURI,
XACML3.ID_DATATYPE_HEXBINARY,
XACML3.ID_DATATYPE_BASE64BINARY,
XACML3.ID_DATATYPE_RFC822NAME,
XACML3.ID_DATATYPE_X500NAME,
XACML3.ID_DATATYPE_IPADDRESS,
XACML3.ID_DATATYPE_DNSNAME));
}
public static final Set<Identifier> POLICY_ALGORITHMS = new HashSet<Identifier>();
static {
POLICY_ALGORITHMS.addAll(Arrays.asList(
XACML3.ID_POLICY_DENY_OVERRIDES,
XACML3.ID_POLICY_DENY_UNLESS_PERMIT,
XACML3.ID_POLICY_FIRST_APPLICABLE,
XACML3.ID_POLICY_ON_PERMIT_APPLY_SECOND,
XACML3.ID_POLICY_ONLY_ONE_APPLICABLE,
XACML3.ID_POLICY_ORDERED_DENY_OVERRIDES,
XACML3.ID_POLICY_ORDERED_PERMIT_OVERRIDES,
XACML3.ID_POLICY_PERMIT_OVERRIDES,
XACML3.ID_POLICY_PERMIT_UNLESS_DENY
));
}
public static final Set<Identifier> RULE_ALGORITHMS = new HashSet<Identifier>();
static {
RULE_ALGORITHMS.addAll(Arrays.asList(
XACML3.ID_RULE_DENY_OVERRIDES,
XACML3.ID_RULE_DENY_UNLESS_PERMIT,
XACML3.ID_RULE_FIRST_APPLICABLE,
XACML3.ID_RULE_ONLY_ONE_APPLICABLE,
XACML3.ID_RULE_ORDERED_DENY_OVERRIDES,
XACML3.ID_RULE_ORDERED_PERMIT_OVERRIDES,
XACML3.ID_RULE_PERMIT_OVERRIDES,
XACML3.ID_RULE_PERMIT_UNLESS_DENY
));
}
public static final Set<Identifier> STANDARD_ATTRIBUTES = new HashSet<Identifier>();
static {
STANDARD_ATTRIBUTES.addAll(Arrays.asList(
XACML3.ID_SUBJECT_SUBJECT_ID,
XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
XACML3.ID_SUBJECT_KEY_INFO,
XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
XACML3.ID_SUBJECT_REQUEST_TIME,
XACML3.ID_SUBJECT_SESSION_START_TIME,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
XACML3.ID_SUBJECT_ROLE,
XACML3.ID_ACTION_ACTION_ID,
XACML3.ID_ACTION_IMPLIED_ACTION,
XACML3.ID_RESOURCE_RESOURCE_ID,
XACML3.ID_RESOURCE_RESOURCE_LOCATION,
XACML3.ID_RESOURCE_SIMPLE_FILE_NAME,
XACML3.ID_ENVIRONMENT_CURRENT_DATE,
XACML3.ID_ENVIRONMENT_CURRENT_TIME,
XACML3.ID_ENVIRONMENT_CURRENT_DATETIME
));
}
public static final Map<Identifier, Set<Identifier>> MAP_STANDARD_CATEGORIES = new HashMap<Identifier, Set<Identifier>>();
static {
MAP_STANDARD_CATEGORIES.put(XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT, new HashSet<Identifier>(Arrays.asList(
XACML3.ID_SUBJECT_SUBJECT_ID,
XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
XACML3.ID_SUBJECT_KEY_INFO,
XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
XACML3.ID_SUBJECT_REQUEST_TIME,
XACML3.ID_SUBJECT_SESSION_START_TIME,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
XACML3.ID_SUBJECT_ROLE
)));
MAP_STANDARD_CATEGORIES.put(XACML3.ID_SUBJECT_CATEGORY_CODEBASE, new HashSet<Identifier>(Arrays.asList(
XACML3.ID_SUBJECT_SUBJECT_ID,
XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
XACML3.ID_SUBJECT_KEY_INFO,
XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
XACML3.ID_SUBJECT_REQUEST_TIME,
XACML3.ID_SUBJECT_SESSION_START_TIME,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
XACML3.ID_SUBJECT_ROLE
)));
MAP_STANDARD_CATEGORIES.put(XACML3.ID_SUBJECT_CATEGORY_INTERMEDIARY_SUBJECT, new HashSet<Identifier>(Arrays.asList(
XACML3.ID_SUBJECT_SUBJECT_ID,
XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
XACML3.ID_SUBJECT_KEY_INFO,
XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
XACML3.ID_SUBJECT_REQUEST_TIME,
XACML3.ID_SUBJECT_SESSION_START_TIME,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
XACML3.ID_SUBJECT_ROLE
)));
MAP_STANDARD_CATEGORIES.put(XACML3.ID_SUBJECT_CATEGORY_RECIPIENT_SUBJECT, new HashSet<Identifier>(Arrays.asList(
XACML3.ID_SUBJECT_SUBJECT_ID,
XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
XACML3.ID_SUBJECT_KEY_INFO,
XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
XACML3.ID_SUBJECT_REQUEST_TIME,
XACML3.ID_SUBJECT_SESSION_START_TIME,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
XACML3.ID_SUBJECT_ROLE
)));
MAP_STANDARD_CATEGORIES.put(XACML3.ID_SUBJECT_CATEGORY_REQUESTING_MACHINE, new HashSet<Identifier>(Arrays.asList(
XACML3.ID_SUBJECT_SUBJECT_ID,
XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
XACML3.ID_SUBJECT_KEY_INFO,
XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
XACML3.ID_SUBJECT_REQUEST_TIME,
XACML3.ID_SUBJECT_SESSION_START_TIME,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
XACML3.ID_SUBJECT_ROLE
)));
MAP_STANDARD_CATEGORIES.put(XACML3.ID_ATTRIBUTE_CATEGORY_ACTION, new HashSet<Identifier>(Arrays.asList(
XACML3.ID_ACTION_ACTION_ID,
XACML3.ID_ACTION_IMPLIED_ACTION
)));
MAP_STANDARD_CATEGORIES.put(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE, new HashSet<Identifier>(Arrays.asList(
XACML3.ID_RESOURCE_RESOURCE_ID,
XACML3.ID_RESOURCE_RESOURCE_LOCATION,
XACML3.ID_RESOURCE_SIMPLE_FILE_NAME
)));
MAP_STANDARD_CATEGORIES.put(XACML3.ID_ATTRIBUTE_CATEGORY_ENVIRONMENT, new HashSet<Identifier>(Arrays.asList(
XACML3.ID_ENVIRONMENT_CURRENT_DATE,
XACML3.ID_ENVIRONMENT_CURRENT_TIME,
XACML3.ID_ENVIRONMENT_CURRENT_DATETIME
)));
}
public static String extractShortName(String xacmlID) {
if (xacmlID == null) {
return null;
}
if (xacmlID.startsWith("http:")) {
String [] parts = xacmlID.split("[#]");
if (parts != null && parts.length > 0) {
return parts[parts.length - 1];
}
return null;
}
if (xacmlID.startsWith("urn") || xacmlID.contains(":")) {
String[] parts = xacmlID.split("[:]");
if (parts != null && parts.length > 0) {
return parts[parts.length - 1];
}
}
return null;
}
}