F OPSS System and Configuration Properties

This appendix documents OPSS system properties (set through the switch -D at server start) and configuration properties (set with elements <property> and <extendedProperty> in the configuration file jps-config.xml) in the following sections:

To manage server properties programmatically, use OPSS MBeans. For details and example, see Section E.2.3, "Programming with OPSS MBeans."

Note:

All OPSS configuration changes (manual or through JpsConfiguration MBean) require server restart to take effect.

OPSS data domain changes do not require server restart to take effect. Data changes include modifying an application policy and creating, deleting, or updating a credential.

F.1 OPSS System Properties

A system property cannot be set without restarting the server. In order to set a system property the administrator must edit the setDomainEnv.sh shell script and add the property to the environment variable EXTRA_JAVA_PROPERTIES in that script.

Table F-1 lists the Java system properties available with OPSS.

Table F-1 Java System Properties Used by OPSS

Name Description

jaas.username.simple

This property, which is exposed in Identity Store service, specifies which part of the user's name the JpsPrincipal.getName() method should return.

For XML file-based identity stores: If this property is set to true (which is the default), JpsPrincipal.getName() returns the username only. If this property is set to false, the getName() method returns "realm-name/username".

For LDAP-based identity stores: If set to true, JpsPrincipal.getName() returns only the simple name (meaning the CN). If set to false, JpsPrincipal.getName() returns the entire DN.

Default: true

java.security.policy

Specifies the location of the OPSS policy file.

jps.app.credential.overwrite.allowed

When set to True, it specifies that the migration of credentials should overwrite existing credentials when the application is deployed or redeployed when the server is running in development mode. For details, see Section 15.4.5.3, "To Migrate Credentials with Overwriting."

jps.auth.debug

Increases server logging output. For details, see Section I.1.2.1, "jps.auth.debug."

jps.auth.debug.verbose

Increases server logging output. For details, see Section I.1.2.2, "jps.auth.debug.verbose."

jps.change.notifier.file.delay

Indicates the frequency, in milliseconds, at which the system checks the domain files system-jazn-data.xml and cwallet.sso for changes. The default value is 1000 (milliseconds). Set at server start, as illustrated in the following snippet:

-Djps.change.notifier.file.delay=600000

In production environments, it is recommended a frequency of about 10 min. (600000 milliseconds). In development environments, it is recommended a frequency of about 3 min. (180000 milliseconds).

jps.policystore.java2.enable

Enables Java 2 policy.

Values: boolean

Default: false

jps.policystore.readonly

Specifies whether the policy store is read-only.

Values: boolean

Default: false

jps.update.subject.dynamic

Specifies whether application roles are recalculated on each request. Setting this flag to true has a significant impact on server performance.

Values: boolean

Default: false

oracle.security.jps.JpsContextFactory

Specifies the factory class for creating OPSS context instances.

Values: string

Default: oracle.security.jps.internal.core.runtime.JpsContextFactoryImpl

oracle.security.jps.config

Specifies the full path to the domain configuration files jps-config.xml, or jps-config-jse.xml. Paths specifications in configuration file can be relative to the location of the configuration file or absolute.

Value: string

oracle.security.jps.config.JpsConfigurationFactory

Specifies the factory class for creating OPSS configuration instances.

Values: string

Default: oracle.security.jps.internal.config.xml.XmlConfigurationFactory


F.2 OPSS Configuration Properties

This section describes the properties that can be set in the file jps-config.xml with the elements <property> or <extendedProperty>, in the following sections:

F.2.1 Service Instance Location Properties

Table F-2 lists the properties that specify the location of LDAP- or file-based store instances.

Table F-2 Service Instance Properties

Name Property / Extended Property Description

ldap.url

Property

For an LDAP-based identity store, policy store, or credential store service instance, this property specifies the URL to the directory server.

Values: string

Example:

<serviceInstance name="policystore.oid" provider="policy.oid">
   ...
   <property name="ldap.url"
             value="ldap://myoid.oracle.com:389"/>
   ...
</serviceInstance>

location

Property

For a file-based identity store or policy store service instance, or a wallet-based credential store service instance, this property specifies the file path to the data store.

Values: string

Example 1: Wallet-based credential store

<serviceInstance name="credstore" provider="credstoressp">
   ...
   <property name="location" value="./" />
   ...
</serviceInstance>

Example 2: File-based identity or policy store

<serviceInstance name="idstore.xml"
                 provider="idstore.xml.provider">
   ...
   <property name="location" value="./system-jazn-data.xml" />
   ...
</serviceInstance>

F.2.2 Identity Store Properties

Table F-3 lists the properties of file- and LDAP-based identity store instances.

Table F-3 Identity Store Properties

Name Property / Extended Property Description

admin.user.name

Property

Specifies the administrative user account.

Values: string

Default: fmwadmin

idstore.type

Property

Indicates the type of the identity store.

Values:

XML - file-based identity store. Because XML is the only possible value for a file-based identity store, idstore.type need not be specified in this case.

OID - Oracle Internet Directory

OVD - Oracle Virtual Directory

ACTIVE_DIRECTORY - Active Directory

IPLANET - Sun Java System Directory Server

WLS_OVD - WebLogic OVD

CUSTOM - Any other type

subscriber.name

Property

Specifies the default realm for the identity store.

Values: string

Default for file-based identity store: jazn.com

Example 1: LDAP-based identity store

<serviceInstance name="idstore.ldap"
                 provider="idstore.ldap.provider">
   <property name="subscriber.name"
             value="dc=us,dc=oracle,dc=com"/>
   ...
</serviceInstance>

Example 2: File-based identity store

<serviceInstance name="idstore.xml"
                 provider="idstore.xml.provider">
   <!-- Subscriber name must be defined for XML Identity Store -->
   <property name="subscriber.name" value="jazn.com"/>
   ...
</serviceInstance>

F.2.3 LDAP Properties

Table F-4 lists the properties of LDAP-based stores that can be specified in service instances. In the case of an LDAP-based identity store service instance, to ensure that the User and Role API picks up the connection pool properties when it is using the JNDI connection factory, the identiry store service instance must include the following property:

<property 
name="INITIAL_CONTEXT_FACTORY" value="com.sun.jndi.ldap.LdapCtxFactory"/>

Table F-4 LDAP Properties

Name Property / Extended Property Description

connection.pool.authentication

Property

Specifies the type of LDAP connection that the JNDI connection pool uses.

Values: none, simple, and DIGEST-MD5.

Default: simple.

connection.pool.max.size

Property

Specifies the maximum number of connections in the LDAP connection pool.

Values: integer

Example: 30

connection.pool.min.size

Property

Specifies the minimum number of connections in the LDAP connection pool.

Values: integer

Example: 5

connection.pool.protocol

Property

Specifies the protocol to use for the LDAP connection.

Values: plain, ssl.

Default: plain.

connection.pool.provider.type

Property

Specifies the connection pool to use.

Values: JNDI, IDM.

Default: JNDI.

connection.pool.timeout

Property

Specifies the number of milliseconds that an idle connection can remain in the pool; after timeout, the connection is closed and removed from the pool.

Values: an integer in string form.

Default: "300000" (5 minutes)

oracle.security.jps.farm.name

Property

Specifies the name of the node under the JPSContext node in the LDAP repository, as in illustrated in the following example:

<property value="cn=wls-jrfServer" name="oracle.security.jps.farm.name"/> 

oracle.security.jps.farm.root.name

Property

Specifies the name of the top-most node in the LDAP repository, as in illustrated in the following example:

<property value="cn=jpsTestNode" name="oracle.security.jps.ldap.root.name"/> 

oracle.security.jps.ldap.cache.enable

Property

Specifies whether to enable or disable the LDAP cache.

Values: true or false

oracle.security.jps.ldap.cache.initial.capacity

Property

Specifies the initial capacity of the hashmap. This value affects performance, so it is important to set it to a value too low.

The caching service maintains a global hashmap (a java.util.HashMap instance) that is used to store and retrieve cached objects. Expired objects in the hashmap are periodically invalidated and cleaned up automatically, as appropriate. Objects in the cache expire based on a time-to-live algorithm; expiration time can be set through these cache properties:

Values: integer

Default: 20

oracle.security.jps.ldap.cache.load.factor

Property

Specifies the load factor for the hashmap. This measures how full the cache is allowed to get before its capacity is automatically increased. This value affects overall performance, so it is important not to set it to value too close to 1.

Values: a number between 0 and 1.

Default: 0.7

oracle.security.jps.ldap.cache.purge.timeout

Property

Specifies the time (in milliseconds) an object remains in cache before being invalidated and removed. It is also the sleep-time for the daemon thread between each run looking for expired objects.

Values: integer

Default: 3600000 (one hour)

oracle.security.jps.ldap.max.retry

Property

Speciifes the maximum number of retry attempts if there are problems with the LDAP connection.

Values: integer

Example: 5

oracle.security.jps.ldap.root.name

Property

Speciifes the LDAP context root for OPSS.

Values: string

Default: cn=OracleJpsContainer

oracle.security.jps.ldap.topology.canonical.path

Property

Specifies the canonical path name of the topology node in MAS that represents the unmanaged LDAP server.

Values: string

Example: /farm6946_FarmRoot/farm6946/ldap1


Example:

<jpsConfig ... >
   ...
   <!-- These are various JPS common properties used for LDAP operations -->
   <property name="oracle.security.jps.farm.name" value="cn=OracleFarmContainer"/>
   <property name="oracle.security.jps.ldap.root.name"
             value="cn=OracleJpsContainer"/>
   <property name="oracle.security.jps.ldap.max.retry" value="5"/>
   ...
</jpsConfig>

F.2.4 LDAP Identity Store Properties

Table F-5 lists the properties of just LDAP identity stores. See Identity Store Properties for a listing of properties that apply to both file-based and LDAP-based identity stores.

See Also:

Table F-5 LDAP Identity Store Properties

Name Property / Extended Property Description

group.create.bases

Extended property

Specifies the base DNs in the LDAP directory for creating roles (groups).

Values: strings

Example: cn=groups,dc=us,dc=abc,dc=com (single DN)

group.filter.object.classes

Extended property

Specifies fully qualified names of object classes used for searching roles (groups).

Values: strings

group.mandatory.attrs

Extended property

Specifies the attributes that must be specified when creating a role (group) object.

Values: strings

group.member.attrs

Extended property

Specifies the attribute of a static LDAP role object that specifies the distinguished names (DNs) of the members of the role.

Values: strings

Examples:

member (for Active Directory)

uniqueMember (for Sun Java System Directory Server)

group.object.classes

Extended property

Specifies fully qualified names of one or more schema object classes used to represent roles (groups).

Values: strings

group.search.bases

Extended property

Specifies base DNs in the LDAP directory for searching roles (groups).

Values: strings

Example: cn=groups,dc=us,dc=abc,dc=com (single DN)

group.selected.create.base

Extended property

Specifies base DNs in the LDAP directory for creating roles (groups).

Values: strings

Example: cn=users,dc=us,dc=abc,dc=com (single DN)

group.selected.search.base

Extended property

Specifies base DNs in the LDAP directory for searching roles (groups).

Values: strings

Example: cn=users,dc=us,dc=abc,dc=com (single DN)

groupname.attr

Property

Specifies the LDAP attribute that uniquely identifies the name of the role (group).

Values: string

Example: cn

max.search.filter.length

Property

Specifies the maximum number of characters of the search filter for an identity store service, as illustrated in the following example:

<property name="max.search.filter.length" value="500"/> 

Value: a positive integer

search.type

Property

Specifies the type of search to employ when the repository is queried.

Values: SIMPLE, PAGED, VIRTUAL_LIST_VIEW

For a description of these values, see the User and Role API javadoc.

security.credential

Property

Specifies the password (obfuscated) of the LDAP user specified in security.principal. These properties (security.credential and security.principal) are used only if the password for the LDAP server is stored in jps-config.xml.

If the password is stored in the credential store, then security.principal.alias and security.principal.key are used instead.

Values: string

security.principal

Property

See the description for security.credential.

Values: string

Example: orcladmin

security.principal.alias

Property

Specifies the alias for the LDAP user name. The key for the password is specified in security.principal.key. These properties (security.principal.alias and security.principal.key) are used only if the password for the LDAP server is stored in the credential store.

If the password is stored in jps-config.xml, then security.principal and security.credential are used instead.

Values: string

Example: JPS

security.principal.key

Property

See the description for security.principal.alias.

Values: string

Example: ldap.credentials

user.create.bases

Extended property

Specifies the base DNs in the LDAP directory for creating users.

Values: strings

Example: cn=users,dc=us,dc=abc,dc=com (single DN)

user.filter.object.classes

Extended property

Specifies fully qualified names of object classes used for searching users.

Values: strings

user.login.attr

Property

Specifies the login identity of the user.

Values: string

user.mandatory.attrs

Extended property

Specifies the attributes that must be specified when creating a user object.

Values: strings

user.object.classes

Extended property

Specifies fully qualified names of one or more schema object classes used to represent users.

Values: strings

user.search.bases

Extended property

Specifies base DNs in the LDAP directory for searching users.

Values: strings

Example: cn=users,dc=us,dc=abc,dc=com (single DN)

username.attr

Property

Specifies the LDAP attribute that uniquely identifies the name of the user.

Values: string


F.2.5 Anonymous and Authenticated Roles Properties

Table F-6 lists the properties of anonymous users, anonymous roles, and authenticated roles. Some of them may also be used to configure the anonymous service or an identity store login module.

Table F-6 Anonymous and Authenticated Roles Properties

Name Property / Extended Property Description

anonymous.role.description

Property

Provides a description for the anonymous role.

Values: string

Example: This is the anonymous role used by the anonymous service instance.

anonymous.role.name

Property

Specifies the principal name for the anonymous role.

Values: string

Default: anonymous-role

anonymous.role.uniquename

Property

Specifies the "unique name" for the anonymous role.

Values: string

Default: anonymous-role

anonymous.user.name

Property

Specifies the principal name for the anonymous user.

Values: string

Default: anonymous

authenticated.role.description

Property

Provides a description for the authenticated role.

Values: string

Example: This is the role used for authenticated users by the identity store service instance.

authenticated.role.name

Property

Specifies the principal name for the role used for authenticated users.

Values: string

Default: authenticated-role

authenticated.role.uniquename

Property

Specifies the "unique name" for the authenticated role.

Values: string

Default: authenticated-role

remove.anonymous.role

Property

Specifies that after the user is authenticated, the anonymous role should be removed from the subject.

Values: boolean

Default: false


F.2.6 Policy Provider Framework Properties

Table F-7 lists the properties of the policy provider framework .

Table F-7 Policy Provider Framework Properties

Name Property / Extended Property Description

policystore.delegation.permission

Property

Specifies the fully qualified class name of the permission that extends PolicyDelegationPermission. This is used in runtime for custom provider delegation by the policy framework. By default, this property is not specified in jps-config.xml.

Values: string

policystore.role.memberattr

Property

Specifies the attribute of a static LDAP role object that specifies the distinguished names (DNs) of the members of the role.

Values: string

Example: uniquemember

policystore.role.nameattr

Property

Specifies the name of the LDAP attribute that uniquely identifies the name of the role.

Values: string

Example: cn

policystore.role.objectclass

Property

Specifies LDAP schema object classes that represent a role. If specifying multiple classes, separate the classes with a space.

The default for Sun Java System Directory Server is groupOfUniqueNames. For Active Directory, the default is group.

Values: string

Example: orclrole

policystore.role.searchbase

Property

Specifies a list of space-delimited distinguished names (DN) in the LDAP directory that contains roles.

Values: string

Example: cn=groups,dc=us,dc=abc,dc=com

policystore.role.searchscope

Property

Specifies how deep in the LDAP directory tree to search for roles.

Values: subtree or onelevel (default)

policystore.type

Property

Indicates the type of policy store.

Values:

XML - file-based policy store. Because XML is the only possible value for a file-based policy store, policystore.type need not be specified in this case.

OID - Oracle Internet Directory

ACTIVEDIRECTORY - Active Directory

IPLANET - Sun Java System Directory Server

COREID - Oracle Access Manager

EDIRECTORY - eDirectory

OPENLDAP - OpenLDAP


The following example illustrates the configuration of a policy store service provider, an instance of that provider, using an Oracle Internet Directory, and its use in a jpscontext.

<jpsConfig ... >
   ...
   <serviceProviders>
      <serviceProvider type="POLICY_STORE" name="policystore.ldap.provider"
                    class= "oracle.security.jps.internal.policystore.ldap.LdapPolicyStoreProvider">
         <description>LDAP-based PolicyStore</description>
         <property name="policystore.type" value="OID"/>
         <property name="connection.pool.max.size" value="30"/>
         <property name="connection.pool.provider.type" value="IDM"/>
      </serviceProvider>
   </serviceProviders>
   ...
   <serviceInstances>
      <serviceInstance name="policystore.oid" provider="policystore.ldap.provider">
         <property name="max.search.filter.length" value="4096"/>
         <property name="security.principal" value="cn=orcladmin"/>
         <property name="security.credential" value="password"/>
         <property name="ldap.url" value="ldap://xyz.us.oracle.com:389"/>
         <property name="policystore.jpsbase" value="cn=jps,cn=oraclecontext"/>
         <property name="policystore.role.objectclass" value="orclrole"/>
         <property name="policystore.role.searchbase" value="cn=roles"/>
         <property name="policystore.role.searchscope" value="subtree"/>
         <property name="policystore.role.nameattr" value="cn"/>
         <property name="policystore.role.memberattr" value="uniquemember"/>
         <property name="policystore.role.roleheirarchyattr" value="assignedRoles"/>
      </serviceInstance>
   </serviceInstances>
   ...  
   <jpsContexts default="default">
      <jpsContext name="default">
         <serviceInstanceRef ref="policystore.oid"/>
      </jpsContext>
   </jpsContexts>
</jpsConfig>

F.2.7 Keystore Properties

Table F-8 lists the properties that configure keystore services. To use encryption or signing, you must access a private key in the keystore and specify an alias and a password to retrieve the key, after providing first the password to access the keystore itself.

Table F-8 Keystore Properties

Name Property / Extended Property Description

keystore.crypt.alias

Property

For encryption, specifies the alias for the applicable key.

Values: string

Example: oraenc

keystore.crypt.pass

Property

For encryption, specifies the password for the applicable key.

Values: string

Example: oraenc

keystore.pass

Property

Specifies the password to access the keystore.

Values: string

Example: welcome1

keystore.path

Property

Specifies the path to the keystore file.

Values: string

Example: ./default-keystore.jks

keystore.sign.alias

Property

For signing, specifies the alias for the applicable key.

Values: string

Example: orasign

keystore.sign.pass

Property

For signing, specifies the password for the applicable key.

Values: string

Example: orasign

keystore.type

Property

Specifies the type of keystore, such as JKS or Oracle wallet.

Values: string

Example: JKS


Example

<serviceInstance
        location="${oracle.instance}/config/JpsDataStore/JpsSystemStore/default-keystore.jks"
        provider="keystore.provider" name="keystore">
   <description>Default JKS Keystore Service</description>
   <property value="JKS" name="keystore.type"/>
   <property value="oracle.wsm.security" name="keystore.csf.map"/>
   <property value="keystore-csf-key" name="keystore.pass.csf.key"/>
   <property value="sign-csf-key" name="keystore.sig.csf.key"/>
   <property value="enc-csf-key" name="keystore.enc.csf.key"/>
</serviceInstance>