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

joynr.AccessControlTypes.fidl Maven / Gradle / Ivy

There is a newer version: 1.25.0
Show newest version
/*
 * #%L
 * %%
 * Copyright (C) 2011 - 2017 BMW Car IT GmbH
 * %%
 * Licensed 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.
 * #L%
 */
package infrastructure

<**
	@description: Data types used in communication between Local and Global
		Domain Access Controller (LDAC and GDAC).
**>
typeCollection DacTypes {
	enumeration Permission {
		<**
			@description: Access is granted without any user interaction.
		**>
		YES
		<**
			@description: User interaction is required which either allows
				or denies access.
		**>
		ASK
		<**
			@description: Access is denied without any user interaction.
		**>
		NO
	}

	<**
		@description: A Trust Level (TL) describes the trustworthiness of a
			joynr user and the device he uses to connect to the joynr backend
			or other joynr participants. There are four levels of
			trustworthiness: HIGH, MID, LOW and NONE. Note that NONE refers
			to a completely untrusted, non-authenticated user. All other TLs
			are specified by requirements regarding the device used to
			establish a connection (e.g. vehicle, mobile phone, etc.) and
			the local authentication methods unlocking a user’s certificate
			(e.g. passwords, biometric authentication, etc.).
	**>
	enumeration TrustLevel {
		HIGH
		MID
		LOW
		NONE
	}

	<**
		@description: The Control Entry (CE) stores access permissions of users
			for a domain/interface combination. It is the base class for
			MasterControlEntry and OwnerControlEntry.
	 **>
	struct ControlEntry {
		<**
			@description: A unique user ID (UID) this Control Entry (CE) applies
				to or the wildcard character (asterisk sign) if this CE applies
				to all users. CEs that use the wildcard character are overruled
				by specific ones (if they exist).
		 **>
		String uid
		<**
			@description: The domain this Control Entry (CE) applies to.
		**>
		String domain
		<**
			@description: The interface this Control Entry (CE) applies to.
		**>
		String interfaceName
	}

	<**
		@description: The Master Control Entry (Master CE) stores default
			Trust Levels (TLs) of users that must be met to apply this CE
			or to change this CE. Additionally, it contains possible TLs to
			be used to override default TLs in Owner Control Entries (Owner
			CEs). It is the base class for MasterAccessControlEntry
			and MasterRegistrationControlEntry.
	**>
	struct MasterControlEntry extends ControlEntry {
		<**
			@description: The default required trusted level (TL).
				TL depends on used device and Authentication mechanism.
		**>
		TrustLevel defaultRequiredTrustLevel
		<**
			@description: A list of all possible Trust Levels that may be used
				in an owner CE to overwrite the default required TL.
		**>
		TrustLevel[] possibleRequiredTrustLevels
		<**
			@description: The default Trust Level (TL) that is needed by the requester
				in order to create, edit or delete a corresponding owner CE.
		**>
		TrustLevel defaultRequiredControlEntryChangeTrustLevel
		<**
			@description: A list of all possible Trust Levels (TLs) that may be used
				in an owner CE to override the default required CE change TL.
		**>
		TrustLevel[] possibleRequiredControlEntryChangeTrustLevels
	}

	<**
		@description: The Owner Control Entry (Owner CE) stores Trust Levels (TLs)
			of users that must be met to apply this CE or to change this CE. It is
			the base class for OwnerAccessControlEntry
			and OwnerRegistrationControlEntry.
	**>
	struct OwnerControlEntry extends ControlEntry {
		<**
			@description: The Trust Level (TL) that is needed by the requester in
				order to get the permission defined in this CE. The TL must be listed
				in the possible required TLs of the corresponding Master CE. Otherwise
				this constitutes a conflict.
		**>
		TrustLevel requiredTrustLevel
		<**
			@description: The Trust Level (TL) that is needed by the requester in
				order to create, edit or delete an Owner ACE. The TL must be listed
				in the possible required CE Change TLs of the corresponding Master
				CE. Otherwise this constitutes a conflict.
		**>
		TrustLevel requiredAceChangeTrustLevel
	}

	<**
		@description: The Master Access Control Entry (Master ACE) stores default
			consumer permissions of users for a domain/interface/operations
			combination. Additionally, it contains possible consumer permissions
			to be used to override default consumer permissions in Owner Access
			Control Entries (Owner ACEs). Master ACEs are stored by the Master
			Access Control List (Master ACL) and the optional Mediator Access
			Control List (Mediator ACL).
	**>
	struct MasterAccessControlEntry extends MasterControlEntry {
		<**
			@description: The operation this Access Control Entry (ACE) applies
				to or the wildcard character (asterisk sign) if this ACE applies
				to all operations of the corresponding interface. ACEs that use
				the wildcard character are overruled by specific ones (if they
				exist).
		**>
		String operation
		<**
			@description: The default consumer permission that applies to the specified
				domain, interface and operations combination if there does not
				exist a corresponding ACE in the owner Access Control List (ACL).
		**>
		Permission defaultConsumerPermission
		<**
			@description: A list of all possible consumer permissions that may be used in
				an owner ACE to overwrite the default consumer permission.
		**>
		Permission[] possibleConsumerPermissions
	}

	<**
		@description: The Master Registration Control Entry (Master RCE) stores
			default provider permissions of users for a domain/interface combination.
			Additionally, it contains possible provider permissions to be used to
			override default provider permissions in Owner Registration Control
			Entries (Owner RCEs). Master RCEs are stored by the Master Registration
			Control List (Master RCL) and the optional Mediator Registration Control
			List (Mediator RCL).
	**>
	struct MasterRegistrationControlEntry extends MasterControlEntry {
		<**
			@description: The default provider permission that applies to the specified
				domain and interface combination if there does not exist a corresponding
				RCE in the Owner Registration Control List (Owner RCL).
		**>
		Permission defaultProviderPermission
		<**
			@description: A list of all possible provider permissions that may be used in
				an owner RCE to overwrite the default provider permission.
		**>
		Permission[] possibleProviderPermissions
	}

	<**
		@description: The Owner Access Control Entry (Owner ACE) stores consumer
			permissions of users for a domain/interface/operation combination. Owner
			ACEs are stored by the Owner Access Control List (Owner ACL). If UID,
			domain, interface and operation values of an Owner ACE match the values
			of an Master ACE, default consumer permissions and TLs
			of the Master ACE get overwritten by the consumer permissions and TLs of
			the Owner ACE unless the consumer permissions or TLs conflict with their
			respective possible consumer permissions and TLs.
	**>
	struct OwnerAccessControlEntry extends OwnerControlEntry {
		<**
			@description: The operation this Access Control Entry (ACE) applies
				to or the wildcard character (asterisk sign) if this ACE applies
				to all operations of the corresponding interface. ACEs that use
				the wildcard character are overruled by specific ones (if they
				exist).
		**>
		String operation
		<**
			@description: The consumer permission that applies to the specified
				domain/interface/operation combination. The permission must be
				listed in possible consumer permissions of the corresponding Master ACE.
				Otherwise this constitutes a conflict.
		**>
		Permission consumerPermission
	}

	<**
		@description: The Owner Registration Control Entry (Owner RCE) stores
			provider permissions of users for a domain/interface combination.
			Owner RCEs are stored by the Owner Registration Control List (Owner
			RCL). If UIDs, domain and interface values of an Owner RCE match the
			values of an Master RCE, default provider permissions and TLs of the
			Master RCE get overwritten by the permissions and TLs of the Owner RCE
			unless the permissions or TLs conflict with their respective possible
			permissions and TLs.
	**>
	struct OwnerRegistrationControlEntry extends OwnerControlEntry {
		<**
			@description: The provider permission that applies to the specified
				domain/interface/operations combination. The permission must be
				listed in possible provider permissions of the corresponding Master ACE.
				Otherwise this constitutes a conflict.
		**>
		Permission providerPermission
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy