|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | ||||||||
See:
Description
| Interface Summary | |
|---|---|
| AccessControlled | Interface that all classes representing objects subject to access control must implement. |
| AccessControlManager | The AccessControlManager interface contains the signature of the methods supported by managers of the access control package. |
| IdentityAccessControlled | IdentityAccessControlled marks classes that require the
Modify Identity permission to modify one or more of the
identity attributes for instances of the class. |
| Class Summary | |
|---|---|
| AccessControlHelper | Helper class that provides easy access to the implementation of methods defined by the AccessControlManager interface. |
| AccessControlServerHelper | Helper class that provides server invokable access control methods. |
| AccessPermission | AccessPermission represents the access control permissions that may be granted or denied. |
| AdHocAccessKey | AdHocAccessKey is a specialization of EnumeratedType to
provide localizable owner keys for ad hoc access control rule entries. |
| StandardAccessControlManager | The StandardAccessControlManager provides the standard implementation of a manager for access control. |
| Exception Summary | |
|---|---|
| AccessControlException | Thrown when the access control service detects an unexpected error. |
| InvalidAclEntryException | Deprecated. |
| NotAuthorizedException | Thrown in situations where a user lacks sufficient access rights to carry out an action on a specific object or some other type of authorization error occurs. |
An object is subject to
access control if its type implements the AccessControlled
interface and implements either the DomainAdministered or the
AdHocControlled interface. The AccessControlled interface is
simply a marker interface, without any methods. Access control is enforced by
access control lists (ACLs), which associate principals to positive or negative
sets of access permissions. Permissions are defined by the AccessPermission class. When a user attempts to perform an operation
on an object, the ACLs are evaluated according to the model set forth by the java.security.acl.Acl
interface, and access is granted or denied.
Two types of ACLs can be
associated with an object: a policy ACL, generated from access control policy
rules, and an ad hoc ACL, generated from ad hoc access control rules. A single
policy ACL applies to all objects within a domain of a specific type and in a
specific state, while the ad hoc ACL is specific to a single object. The AccessPolicyRule class defines policy rules and the AdHocControlled
interface defines objects with ad hoc rules. Both the AccessPolicyRule class
and the AdHocControlled interface implement the AccessControlList interface, which associates a set of entries to an
ACL, and both contain an entry set attribute (defined by the AclEntrySet class), which is a cache of the entries. An access
control rule entry is defined by the WTAclEntry class.

Access
Control Lists
Only a subset of the
described access control classes are supported. To determine if a class or one of its methods is part of the Supported
API, consult the Javadoc for that class.
To
be associated to a policy ACL, an object must belong to a domain; that is, its
type must implement the DomainAdministered interface (see the wt.admin
package). Each domain has its own access control policy that may contain many
policy rules and ACLs.

Policy Access Control
Both
the policy ACL and the rule contain a selector object that contains information
about which domain, type and state they are associated with. They also contain
a cached set of entries, each entry representing a specific mapping between a
principal (that is, a user, a group, or an organization; see the wt.org
package) and a set of permissions. The difference between the policy ACL and
the rule is that an ACL is derived from all of the rules that apply to a
domain, type and state. Applicable rules include those inherited from ancestor
domains and types. See the Windchill Business Administrator's Guide for
additional information. Policy ACLs are created on demand and, for performance
reasons, stored persistently in the database and in a server cache.
Every object that implements
AdHocControlled holds an ACL that is specific to the object, as shown in the
figure below.

Ad Hoc Access Control
If
an object is both DomainAdministered and AdHocControlled, then both the policy
and the ad hoc ACLs determine its access, in an additive manner. Ad hoc ACLs associate
principals to a positive set of access permissions, granting additional permissions
beyond those defined by policies. In the same way as the
policy ACL, the ad hoc ACL also contains a cached set of entries.
Although
ACLs can map only principals to permissions, an ad hoc ACL specification
(represented by the AdHocAclSpec class) may also map roles to permissions. Ad
hoc access control rules can be generated from the ad hoc specification by
resolving the roles into principals. Depending on the role to principal mapping
used to resolve the roles, the same specification may generate many different
ad hoc ACLs.
The functionality of this
service is represented by the AccessControlManager (accessible through the AccessControlHelper),
and the AccessControlManagerSvr (accessible through the AccessControlServerHelper).
StandardAccessControlManager
defines the access control enforcement, access control policy, and ad hoc
access functionality. For enforcement, the most important method is checkAccess,
which takes a permission and an object or a collection of objects as parameters
and throws a NotAuthorizedException if access is not granted to the current
principal.

Access
Control Manager
The rule for access control
enforcement returns true (permission granted) if the object is not access
controlled, or if it is not ad hoc controlled and doesn't belong to a domain.
If the object belongs to a domain, the policy ACL is generated (or retrieved if
it already exists), and the ACL is evaluated. In case the object does not
belong to a domain or access is not granted by the policy ACL, the object is
checked to see if it is ad hoc controlled. If it is and has an ad hoc ACL, the
ACL is evaluated and access is granted accordingly. Otherwise, access is
denied.
When applying access control
enforcement to a DomainAdministered object, the policy ACLs used are those
associated with the domain to which the object belongs and those associated
with all ancestor domains. This allows objects to have very different access
control behavior even if they are of the same type.
The access control manager
emits the AccessControlEvent.NOT_AUTHORIZED event if the checkAccess method is
called and access is not granted to the current principal.
The access control manager
listens for the following events:
•
AdministrativeDomainManagerEvent.POST_CHANGE_DOMAIN – When the domain hierarchy
changes, the manager reevaluates policy ACLs affected by the changes.
•
PersistenceManagerEvent.INSERT – When an AdHocControlled object is created, the
manager persists any ad hoc access control entries associated with the object.
•
PersistenceManagerEvent.POST_DELETE – When a domain is deleted, the manager
deletes the associated policy ACLs.
|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | ||||||||