Oracle® Fusion Middleware Application Security Guide 11g Release 1 (11.1.1) Part Number E10043-08 |
|
|
View PDF |
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.
A system property that has been introduced or modified is not in effect until the server is restarted. 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 |
---|---|
|
Notifies about a permission failure when the method JpsAuth.checkPermission is called inside a Subject.doAs block and the permission check fails. Note that setting jps.auth.debug or jps.auth.debug.verbose is not enough to get a failure notification in this case. Optional. |
Specifies the location of the Java security policy file. |
|
|
Enables or disables the delegation of calls to JDK API AccessController.checkPermission, which reduces runtime and debugging overhead. Optional. Valid values: No default value. |
|
Controls server logging output. Default value: FALSE. For details, see Section L.1.2.1, "jps.auth.debug." See also java.security.debug. Optional. |
|
Controls server logging output. Default value: FALSE. For details, see Section L.1.2.2, "jps.auth.debug.verbose." See also java.security.debug. Optional. |
|
Enables or disables the caching of a subject's protection domain. Optional. Valid values: Default value: |
|
Enables or disables the evaluation of a subject's protection domain when a check permission is triggered. Optional. Valid values: Default value: |
|
Enables or disables the migration of policies and credentials for applications deployed in a WebLogic Server. Valid only for the WebLogic Server. Set to TRUE to disable the migration of application policies and credentials for all applications deployed in the server regardless of the particular application settings in the application file weblogic-application.xml. Optional. Valid values: Default value: |
Enables or disables the hybrid mode. The hybrid mode is used to facilitate the transition from the Sun java.security.Policy to the OPSS Java PolicyProvider. When the hybrid mode is enabled, the OPSS Java Policy Provider reads from both files, java.policy and system-jazn-data.xml. Optional. Valid values: Default value: |
|
|
Specifies the path to the domain configuration files Required. No default value. |
|
Specifies the path to the directory of a code source URL. Optional. No default value. For an example of use, see <url>. |
|
Specifies the extension of code source URL. Optional. No default value. For an example of use, see <url>. |
|
Logs the name of an application role that contains a specified substring; if the substring to match is unspecified, it logs all application role names. Optional. No default value. For an example of use and further details, see Section L.1.2.3, "Debugging the Authorization Process." |
oracle.security.jps.log.for.permeffect |
Logs a grant that was granted or denied according to a specified value; if the value is unspecified, it logs all grants (regardless whether they were granted or denied). Optional. No default value. For an example of use and further details, see Section L.1.2.3, "Debugging the Authorization Process." |
oracle.security.jps.log.for.permclassname |
Logs the name of the permission class that matches exactly a specified name; if the name to match is unspecified, it logs all permission class names. Optional. No default value. For an example of use and further details, see Section L.1.2.3, "Debugging the Authorization Process." |
oracle.security.jps.log.for.permtarget.substring |
Logs the name of a permission target that contains a specified substring; if the substring to match is unspecified, it logs all permission targets. Optional. No default value. For an example of use and further details, see Section L.1.2.3, "Debugging the Authorization Process." |
oracle.security.jps.log.for.enterprise.principalname |
Logs the name of the principal (enterprise user or enterprise role) that matches exactly a specified name; if the name to match is unspecified, it logs all principal names. Optional. No default value. For an example of use and further details, see Section L.1.2.3, "Debugging the Authorization Process." |
This section describes the properties of various instances in the following sections:
The policy store properties are described in the following sections:
The policy store provider class that can be used with LDAP- or DB-based instances is the following:
oracle.seurity.jps.internal.policystore.ldap.LdapPolicyStoreProvider
Table F-2 describes the properties of policy store instances. The properties are listed in three blocks according to the kind of application they can be used in.
Table F-2 Policy Store Properties
Name | Description |
---|---|
The following properties are valid in both J2EE and J2SE applications |
|
|
The key for the password credentials to access the LDAP policy store, stored in the CSF store. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Required. No default value. The out-of-the-box value is |
|
The map for the password credentials to access the LDAP policy store, stored in the CSF store. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Required. Default value: |
|
The RDN format of the domain node in the LDAP policy store. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Required. No default value. |
|
The RDN format of the root node in the LDAP policy store. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Required. No default value. |
|
The URL of the LDAP policy store, with the format Valid in J2EE and J2SE applications. Applies only to LDAP stores. Required. No default value. |
|
The type of the LDAP policy store. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Required. No default value. Value examples: |
Controls the throwing of exceptions if any of the following checks fail:
If set to If set to Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Default value: Valid values: |
|
The following properties are valid in J2EE applications only |
|
|
The JNDI name of the JDBC data source instance. Valid in only J2EE applications. Applies to only DB stores. Required. No default value. |
|
The number of retry attempts. Valid in only J2EE applications. Applies to only DB stores. Optional. Default value: 3 |
|
The number of seconds between retry attempts. Valid in only J2EE applications. Applies to only DB stores. Optional. Default value: 15 |
The following properties are valid in J2SE applications only |
|
|
The clear text name of the principal to use instead of the user name specified in the bootstrap. Not recommended. Valid in only J2SE applications. Applies to LDAP and DB stores. Optional. No default value. |
|
The clear text password for the security principal to use instead of the password specified in the bootstrap. Not recommended. Valid in only J2SE applications. Applies to LDAP and DB stores. Optional. No default value. |
|
The JDBC driver. Valid in only J2SE applications. Applies to only DB stores. Required. No default value. Value example: |
|
The URL of the JBDC. Valid in only J2SE applications. Applies to only DB stores. Required. No default value. Value example: |
|
The minimum number of connections allowed in the JDBC read connection pool. Valid in only J2SE applications. Applies to only DB stores. Optional. Default value: 5 |
|
The maximum number of connections allowed in the JDBC read connection pool. Valid in only J2SE applications. Applies to only DB stores. Optional. Default value: 20 |
Example 1
The following fragment illustrates the configuration of an LDAP-based policy store instance for a JavaEE application:
<serviceInstance provider="ldap.policystore.provider" name="policystore.ldap"> <property value="OID" name="policystore.type"/> <property value="bootstrap" name="bootstrap.security.principal.key"/> <property value="cn=wls-jrfServer" name="oracle.security.jps.farm.name"/> <property value="cn=jpsTestNode" name="oracle.security.jps.ldap.root.name"/> <property value="ldap://stadk06.us.oracle.com:3060" name="ldap.url"/> <property value="STATIC" name="oracle.security.jps.policystore.rolemember.cache.type"/> <property value="FIFO" name="oracle.security.jps.policystore.rolemember.cache.strategy"/> <property value="1000" name="oracle.security.jps.policystore.rolemember.cache.size"/> <property value="true" name="oracle.security.jps.policystore.policy.lazy.load.enable"/> <property value="PERMISSION_FIFO" name="oracle.security.jps.policystore.policy.cache.strategy"/> <property value="1000" name="oracle.security.jps.policystore.policy.cache.size"/> <property value="true" name="oracle.security.jps.policystore.refresh.enable"/> <property value="43200000" name="oracle.security.jps.policystore.refresh.purge.timeout"/> <property value="600000" name="oracle.security.jps.ldap.policystore.refresh.interval"/> </serviceInstance>
Example 2
The following fragment illustrates the configuration of an LDAP-based policy store instance for a JavaSE application:
<serviceInstance name="policystore.oid" provider="policy.oid"> <property value="OID" name="policystore.type"/> <property value="bootstrap" name="bootstrap.security.principal.key"/> <property name="ldap.url" value="ldap://sttt:3060"/> <property name="oracle.security.jps.ldap.root.name" value="cn=jpsNode"/> <property name="oracle.security.jps.farm.name" value="cn=domain1"/> </serviceInstance>
For additional configurations samples for JavaSE applications, see Section 24.1.2, "Configuring LDAP-Based Policy and Credential Stores."
Example 3
The following fragment illustrates the configuration of DB-based stores (including an instance of a runtime service provider) for a JavaEE application:
<jpsConfig> ... <propertySets> <!-- property set props.db.1 common to all DB services --> <propertySet name="props.db.1"> <property name="datasource.jndi.name" value="opssds"/> <property value="cn=farm" name="oracle.security.jps.farm.name"/> <property value="cn=jpsroot" name="oracle.security.jps.ldap.root.name"/> <property value="dsrc_lookup_key" name="bootstrap.security.principal.key"/> <property value="credential_map" name="bootstrap.security.principal.map"/> </propertySet> </propertySets> <serviceProviders> <serviceProvider class="oracle.security.jps.internal.policystore.ldap.LdapPolicyStoreProvider" type="POLICY_STORE" name="rdbms.policystore.provider" > <description>RDBMS based PolicyStore provider</description> </serviceProvider> <serviceProvider type="KEY_STORE" name="keystore.provider" class="oracle.security.jps.internal.keystore.KeyStoreProvider"> <description>PKI Based Keystore Provider</description> <property name="provider.property.name" value="owsm"/> </serviceProvider> <serviceProvider name="pdp.service.provider" type="PDP" class="oracle.security.jps.az.internal.runtime.provider.PDPServiceProvider"> <description>OPSS Runtime Service provider</description> </serviceProvider> </serviceProviders> <serviceInstances> <serviceInstance name="policystore.rdbms" provider="rdbms.policystore.provider"> <property value="DB_ORACLE" name="policystore.type"/> <propertySetRef ref = "props.db.1"/> <property name="session_expiration_sec" value="60"/> <property name="failover.retry.times" value="5"/> </serviceInstance> <serviceInstance name="credstore.rdbms" provider="rdbms.credstore.provider"> <propertySetRef ref = "props.db.1"/> </serviceInstance> <serviceInstance name="keystore.rdbms" provider="rdbms.keystore.provider"> <propertySetRef ref = "props.db.1"/> <property name="keystore.provider.type" value="db"/> </serviceInstance> <serviceInstance name="pdp.service" provider="pdp.service.provider"> <property name="sm_configuration_name" value="permissionSm"/> <property name="work_folder" value="../../tempdir/permissionSm-work"/> <property name="authorization_cache_enabled" value="true"/> <property name="role_cache_enabled" value="true"/> <property name="session_eviction_capacity" value="500"/> <property name="session_eviction_percentage" value="10"/> <property name="session_expiration_sec" value="60"/> <property name="failover.retry.times" value="5"/> <property name="failover.retry.interval" value="20"/> <property name="oracle.security.jps.policystore.purge.timeout", value="30000"/> <propertySetRef ref = "props.db.1"/> </serviceInstance> </serviceInstances> <jpsContexts default="default"> <jpsContext name="default"> <serviceInstanceRef ref="pdp.service"/> <serviceInstanceRef ref="policystore.rdbms"/> <serviceInstanceRef ref="credstore.rdbms"/> <serviceInstanceRef ref="keystore.rdbms"/> </jpsContext> </jpsContexts> ... </jpsConfig>
Example 4
The following fragment illustrates the configuration of a DB-based policy store instance for a JavaSE application:
<serviceInstance name="policystore.rdbms" provider="policy.rdbms"> <property name="policystore.type" value="DB_ORACLE"/> <property name="jdbc.url" value="jdbc:oracle:thin:@sc.us.oracle.com:1722:orcl"/> <property name="jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="bootstrap.security.principal.key" value="bootstrap_DWgpEJgXwhDIoLYVZ2OWd4R8wOA=" /> <property name="oracle.security.jps.ldap.root.name" value="cn=jpsTestNode"/> <property name="oracle.security.jps.farm.name" value="cn=view_steph.atz"/> </serviceInstance>
For additional configurations samples for JavaSE applications, see Section 24.1.3, "Configuring DB-Based OPSS Security Stores."
The runtime policy store provider class that can be used with LDAP- or DB-based instances is the following:
oracle.seurity.jps.az.internal.runtime.provider.PDPServiceProvider
Table F-3 lists the runtime properties of policy store instances.
Table F-3 Runtime Policy Store Properties
Name | Description |
---|---|
|
The type of the role member cache. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Valid values:
Default value: |
|
The type of strategy used in the role member cache. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Valid values:
Default value: |
|
The number of the roles kept in the member cache. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Default value: 1000. |
|
Enables or disables the policy lazy load. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Valid values: Default value: |
|
The type of strategy used in the permission cache. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Valid values:
Default value: |
|
The number of permissions kept in the permission cache. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Default value: 1000. |
|
Enables or disables the policy store refresh. If this property is set, then Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Valid values: Default value: |
|
Enables or disables the refresh of the cache. If this property is set, then Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Valid values: Default value: |
|
The time, in milliseconds, after which the policy store cache is purged. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Default value: 43200000 (12 hours). |
|
The interval, in milliseconds, at which the policy store is polled for changes. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Default value: 600000 (10 minutes). |
|
The number of user's permissions after which the permission cache is invalidated. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Default value: 50. |
|
Controls the way the ApplicationRole membership cache is created. If set to TRUE, the cache is created at server startup; otherwise, it is created on demand (lazy loading). Set to TRUE when the number of users and groups is significantly higher than the number of application roles; set to FALSE otherwise, that is, when the number of application roles is very high. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Valid values: Default value: |
|
The folder for temporary storage. Valid in J2EE and J2SE applications. Applies to XML, LDAP, and DB stores. Optional. Default value: the system temporary folder. |
|
Specifies whether the authorization cache should be enabled. Valid in J2EE and J2SE applications. Applies to XML, LDAP, and DB stores. Optional. Valid values: Default value: |
|
The percentage of sessions to drop when the eviction capacity is reached. Valid in J2EE and J2SE applications. Applies to XML, LDAP, and DB stores. Optional. Default value: 10 |
|
The maximum number of authorization and role mapping sessions to maintain. When the maximum is reached, old sessions are dropped and reestablished when needed. Valid in J2EE and J2SE applications. Applies to XML, LDAP, and DB stores. Optional. Default value: 500 |
|
The number of seconds during which session data is cached. Valid in J2EE and J2SE applications. Applies to XML, LDAP, and DB stores. Optional. Default value: 60 |
Controls the throwing of exceptions if any of the following checks fail:
If set to If set to Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Optional. Default value: Valid values: |
Table F-4 lists the properties of credential store instances. The properties are listed in two blocks according to the kind of application they can be used in.
Table F-4 Credential Store Properties
Name | Description |
---|---|
The following properties are valid in J2EE applications only |
|
|
The key for the password credentials to access the LDAP credential store, stored in the CSF store. Valid only in J2EE applications. Applies to LDAP and DB stores. Required. No default value. The out-of-the-box value is |
|
The map for the password credentials to access the LDAP credential store, stored in the CSF store. Valid only in J2EE applications. Applies to LDAP and DB stores. Required. Default value: |
The following properties are valid in both J2EE and J2SE applications |
|
|
The RDN format of the domain node in the LDAP credential store. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Required. No default value. |
|
The RDN format of the root node in the LDAP policy store. Valid in J2EE and J2SE applications. Applies to LDAP and DB stores. Required. No default value. |
|
Specifies the URL of the LDAP credential store using the format Valid in J2EE and J2SE applications. Applies only to LDAP stores. Required. No default value. |
The following fragment illustrates the configuration of a credential store in a J2EE application:
<serviceInstance provider="ldap.credentialstore.provider" name="credstore.ldap"> <property value="bootstrap" name="bootstrap.security.principal.key"/> <property value="cn=wls-jrfServer" name="oracle.security.jps.farm.name"/> <property value="cn=jpsTestNode" name="oracle.security.jps.ldap.root.name"/> <property value="ldap://stttt.us.oracle.com:3060" name="ldap.url"/> </serviceInstance>
Table F-5 lists the properties of LDAP-based identity store instances. Extended properties are explicitly stated. User and Role API properties corresponding to a property are also stated.
Table F-5 LDAP-Based Identity Store Properties
The following fragment illustrates the configuration of an LDAP-based identity store for a J2SE application:
<serviceInstance name="idstore.ldap" provider="idstore.ldap.provider"> <property name="idstore.type" value="OID"/> <property name="security.principal.alias" value="MAP_NAME"/> <property name="security.principal.key" value="KEY_NAME"/> <property name="ldap.url" value="ldap://stadk06:3060"/> <extendedProperty> <name>user.search.bases</name> <values> <value>cn=users,dc=us,dc=oracle,dc=com</value> </values> </extendedProperty> <extendedProperty> <name>group.search.bases</name> <values> <value>cn=groups,dc=us,dc=oracle,dc=com</value> </values> </extendedProperty> </serviceInstance>
Table F-6 lists generic properties of LDAP-based stores that can be specified in any service instance.
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 identity store service instance must include the following property:
<property name="INITIAL_CONTEXT_FACTORY" value="com.sun.jndi.ldap.LdapCtxFactory"/>
Table F-6 Generic LDAP Properties
Name | Description |
---|---|
|
Specifies the type of LDAP connection that the JNDI connection pool uses. Valid in J2EE and J2SE applications. Optional. Values: Default value: |
|
Specifies the maximum number of connections in the LDAP connection pool. Valid in J2EE and J2SE applications. Optional. Value example: 30 |
|
Specifies the minimum number of connections in the LDAP connection pool. Valid in J2EE and J2SE applications. Optional. Value example: 5 |
|
Specifies the protocol to use for the LDAP connection. Valid in J2EE and J2SE applications. Optional. Values: Default value: |
|
Specifies the connection pool to use. Valid in J2EE and J2SE applications. Optional. Values: Default value: |
|
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. Valid in J2EE and J2SE applications. Optional. Default value: 300000 (5 minutes) |
|
Specifies the maximum number of retry attempts if there are problems with the LDAP connection. Valid in J2EE and J2SE applications. Optional. Value example: 5 |
The following fragment illustrates a configuration of several properties:
<jpsConfig ... > ... <!-- common properties used by all LDAPs --> <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>
Table F-7 lists the properties that can be used to configure file-, LDAP-, or DB-based anonymous users, anonymous roles, and authenticated roles.
Table F-7 Anonymous and Authenticated Roles Properties
Name | Description |
---|---|
|
Specifies a description of the anonymous role. Valid in J2EE and J2SE applications. Optional. No default value. |
|
Specifies the name of the principal in the anonymous role. Valid in J2EE and J2SE applications. Optional. Default value: |
|
Specifies the name of the anonymous role. Valid in J2EE and J2SE applications. Optional. Default value: |
|
Specifies the name of the principal in the anonymous user. Valid in J2EE and J2SE applications. Optional. Default value: |
|
Specifies a description of the authenticated role. Valid in J2EE and J2SE applications. Optional. No default value. |
|
Specifies the name of the principal in authenticated user roles. Valid in J2EE and J2SE applications. Optional. Default value: |
|
Specifies the name of the authenticated role. Valid in J2EE and J2SE applications. Optional. Default value: |
|
Specifies whether the anonymous role should be removed from the subject after a user is authenticated. Valid in J2EE and J2SE applications. Optional. Valid values: Default value: |