Security yfs.properties
Use the customer_overrides.properties file to override properties in the
Security category of yfs.properties.
The following table contains the Security yfs.properties and descriptions.
| Property | Values | Description |
|---|---|---|
| Security | ||
| api.security.enabled | Valid values = Y or N Default = Y |
Set this property to secure access to APIs. If enabled, an authorization check is performed on a user's access to an API when the user calls that API. |
| api.security.mode | Valid values = STRICT, LAX, or DEBUG Default = STRICT |
STRICT - If any validation fails, throw an exception. This is appropriate for production
systems, if all permissions are configured properly. LAX - Filter out and log invalid input, but continue processing. The filtering allows the system to mostly work despite incorrect input or output, while the logging helps to identify places that need change. LAX can be useful during initial development and testing. DEBUG - Log invalid input and output, but do not filter anything or throw exceptions. This is appropriate only during initial development, to identify the permissions required by various processes. Note: If you do not specify a security mode, then the system defaults to STRICT.
Example: api.security.override.createorder.mode=DEBUG This example sets access for the CreateOrder API to DEBUG. |
| api.security.token.enabled | Valid values = Y or N Default = Y |
If api.security.token.enabled = Y, the login API returns a special UserToken security token
attribute upon successful authentication. The api.security.token.timeout property controls how long this token is active. |
| api.security.token.timeout | <number of milliseconds> Default = 100000 milliseconds |
Controls how long the token needs to be active. If a value is not specified, the default
value, which is 100000 milliseconds is considered. Note: There is a max limit the token can be
active.
|
| api.security.console.enabled | Valid values = Y or N Default = N |
If api.security.console.enabled = Y, API security, in addition to the built-in security, is
used for the JSP console. Note: Enabling this property may require that you relax other security settings or take extra steps that are described in the following article:
|
| api.security.smc.enabled | Valid values = Y or N Default = N |
If api.security.smc.enabled = Y, API security, in addition to the built-in security, is used
for the Applications Manager and the system monitor console. Note: Enabling this property may require that you relax other security settings or take extra steps that are described in the following article:
|
| api.outputDBPasswords | Valid values = Y or N Default = N |
If api.outputDBPasswords = true, passwords are returned in the output of the getDBPoolLIst and getDBConnParams APIs. |
| yfs.dsg.api.disable | Valid values = <api_name> | Set this property to disable the new data access policy functionality for specific APIs. Example: yfs.dsg.api.disable=<api_name, api_name, api_name> |
| interopservlet.security.enabled | Valid values = Y or N Default = Y |
Enables application server to authenticate a user, by using token-based or container-based authentication. |
| interopservlet.auth.container.enabled | Valid values = Y or N Default = N |
Set this property to “true” if you want the application server to authenticate a
user by checking whether the user ID matches the requested user ID. If this property is set to
“false”, container-based authentication is disabled. Example: interopservlet.auth.container.enabled = false |
| interopservlet.auth.token.enabled | Valid values = Y or N Default = Y |
Setting this property to “true” validates the user token supplied as a parameter
on the request. When enabled, this also allows access to the login API, which is what supplies the
user token. If this property is set to “false”, token-based authentication is disabled.
Example: interopservlet.auth.token.enabled = true |
| interopservlet.auth.userPassword.enabled | Valid values = Y or N Default = Y |
Set this property to “true” if you want the user ID and password to be passed as
parameters to the servlet, instead of using the typical login API/token approach. Example: interopservlet.auth.userPassword.enabled = true |
| userauthfilter.enabled | Valid values = yes or no Default = Y |
Sets a servlet filter that ensures authenticated user access to everything under web root, except for login pages. |
| yfs.login.singlesignon.class | <class name> | The class that handles Single Signon. For the com.yantra.ycp.japi.util.YCPSSOManager interface for information about how to write your own implementation for this class, see Javadoc. |
| yfs.security.singlesignon.enabled | Valid values = Y or N Default = Y |
If this property is set to Y, the single sign-on class is called. Note: If the CSRF validation
is enabled and the single sign-on is implemented, then it is recommended that you exclude the single
sign on the landing page URI from the CSRF validation.
|
| yfs.login.singlesignon.checkuser | Valid values = Y or N Default = N |
If this property is set to Y, each request is validated against the singleSignOn Server for the user authentication. If the property is set to N, user authentication against the singleSignOn Server is done only when the session times out. |
| yfs.security.authenticator | <class name>
Default is not set. |
The class that is invoked for user authentication. Uncomment and change this only if you
do not want to use application authentication. For the YFSAuthenticator interface for information about how to write your own implementation for this class, see Javadoc . If you want to use the default implementation for LDAP authentication, uncomment the property and set it to com.yantra.yfs.util.YFSLdapAuthenticator. Example: yfs.security.authenticator= |
| yfs.security.ldap.factory | <class name> | The LDAP context factory class name as specified in your LDAP Server configuration. Example: yfs.security.ldap.factory=com.sun.jndi.ldap.LdapCtxFactory |
| yfs.security.ldap.url | <url> | The URL for accessing your LDAP Server as specified in your LDAP Server configuration. Example: yfs.security.ldap.url=ldap://<ldapservername>:<portnum> |
| yfs.security.ldap.ou | Default is not set. | The value specified for the organizational unit in your LDAP Server configuration. Example: yfs.security.ldap.ou= |
| yfs.security.ldap.o | Default is not set. | The value specified for the organization in your LDAP Server configuration. Example: yfs.security.ldap.o= |
| yfs.encrypter.class | <class name> | The class that handles encryption and decryption of credit card numbers. For the YCPEncrypter
interface for information about how to write your own encrypter class, see Javadoc. If this property
is not specified, then no encryption is performed. Note: The
yfs.encrypter.class is deprecated and no longer used for property encryption.
You can now use security.encrypter.class for property encryption.
|
| security.encrypter.class | Valid values = <your_property_encrypter_class> Default is not set. |
The class that handles encryption and decryption of credit card numbers. For the YCPEncrypter interface for information about how to write your own encrypter class, see Javadoc. If this property is not specified, then no encryption will be performed. |
| yfs.propertyencrypter.class | Valid values = <class name> Default is not set. |
This class is used for encrypting and decrypting properties specified in yfs.properties,
yiclient.properties, and management.properties files. All properties that end with ".encrypted" are
automatically decrypted by using this class at runtime. Use this property to encrypt critical data
like user/password. Note: The yfs.propertyencrypter.class is deprecated and no longer used for
property encryption. You can now use security.propertyencrypter.class for
propertyencryption.
Example: yfs.agent.override.auth.password=<password> can be specified as: yfs.agent.override.auth.password.encrypted=<encrypted password> |
| security.propertyencrypter.class | Valid values = <your_property_encrypter_class> Default is not set |
This class will be used for encrypting and decrypting any property (except for the
security.propertyencrypter.class property in the yfs.properties file) mentioned in the runtime
property files (including the sandbox.cfg file). Use this property to encrypt sensitive data, such
as user IDs and passwords. Properties starting with “encrypted:” are automatically
decrypted at run-time. Example: yfs.dblogin.datasource.name=encrypted:<encrypted value> |
| httpOnlyCookie | Valid values = true or false Default = true |
Set the value of this property to “true”, if you want to enable
the httpOnly cookie at the application server
level. Example: yfs.httpOnlyCookie=true |
| For JWT authentication | The below configurations are used only when JWT authentication is enabled at the endpoints, which support JWT authentication. For example, REST APIs. | |
| yfs.jwt.verify.keyloader Issuer specific property: yfs.jwt.<issuer name>.verify.keyloader Important: If you are using IBM Sterling Order Management System Software on IBM Cloud (SaaS), do not modify default properties. Use the
issuer-specific property.
|
Valid values:
Default = jkstruststore |
|
| yfs.jwt.verify.propkeyloader.<kid> | Valid values = <base64 encoded public key, which corresponds to the key id
(“kid”)>. Default is not set. |
When this property is set, the <kid> is matched with the
“kid” obtained in the incoming JWT and based on that the public key is used for
verification. Note: This property is used only when the property, yfs.jwt.verify.keyloader, is set to
“properties”.
For example, A typical base64 encoded public key is as
follows:
For this public key, the property can be configured as
below in a single line. The new line is replaced with “\n”
character.
|
| yfs.jwt.verify.key.uri.cachefor | Valid values = <number of minutes> Default = 180 |
Determines the duration (in minutes) for which to cache the key obtained in the https URI
response, if the standard cache-control directives are not present in the response. The response is
cached as per the standard “Cache-Control” directive sent by the URI. If no valid
“Cache-Control” directives are found in the response, the default caching duration is
used for caching the response. Note: This property is used only when the property,
yfs.jwt.verify.keyloader, is set to any of the following values: httpsjwks, or httpsjwk, or
httpsbase64.
|
| yfs.jwt.verify.keyloader.httpsuri Issuer specific property: yfs.jwt.<issuer name>.verify.keyloader.httpsuri Important: If you are using IBM Sterling Order Management System Software on IBM Cloud (SaaS), do not modify default properties. Use the
issuer-specific property.
|
Valid values = <http(s) URL> Default is not set. |
Determines the http(s) URL to obtain the public key for verification of the JWT. Note:
For example, A typical JWKS response is as follows:
A typical JWK response is as follows:
A typical httpsbase64 response is as follows:
|
| yfs.jwt.verify.key.uri.retry.count | Valid values = <numbers of times to retry connecting to the keyloader
URI>> Default = 3 |
Determines number of times to retry connecting to the URL that is configured in the property,
yfs.jwt.verify.keyloader.httpsuri, if the original request to the URL fails with a reason, which
might be recoverable. Note: This property is used only when the property, yfs.jwt.verify.keyloader,
is set to any of the following values: httpsjwks, or httpsjwk, or httpsbase64.
|
| yfs.jwt.verify.keyloader.req.header.<index> Issuer specific property: yfs.jwt.<issuer name>.verify.keyloader.req.header.<index> Important: If you are using IBM Sterling Order Management System Software on IBM Cloud (SaaS), do not modify default properties. Use the
issuer-specific property.
|
Valid values = <header name>:<header
value> Default is not set. |
Set this property if you want to add certain request headers in the request, which are sent
to obtain the verification key from the https URI. The <index> is a sequence
number starting with 1, <header name> is the name of the header to be added in
the outgoing request, and <header value> is the value corresponding to the
request header. If there are multiple headers to be added, the value of index must be sequential for
the subsequent headers. For example,
|
| yfs.jwt.claimparser.class Issuer specific property: yfs.jwt.<issuer name>.claimparser.class Important: If you are using IBM Sterling Order Management System Software on IBM Cloud (SaaS), do not modify default properties. Use the
issuer-specific property.
|
Valid values = <class name> Default is not set. |
Set the value of this property to a custom class implementing IPLTJWTClaimsParser interface. After verification of JWT, this custom claim parser is invoked to fetch a valid OMS user based on the claims received in the JWT. If custom claim parser is not configured, the default claim parser is used. |
| yfs.jwt.defclaimparser.user.path Issuer specific property: yfs.jwt.<issuer name>.defclaimparser.user.path Important: If you are using IBM Sterling Order Management System Software on IBM Cloud (SaaS), do not modify default properties. Use the
issuer-specific property.
|
Valid values = <relative path of OMS user in the JSON body> Default is not set. |
Path used to identify the OMS user's login ID from the incoming JWT. For example, if the JWT
has a JSON body as follows:, the property must be configured as follows to read the OMS
user:In this example, the property reads the OMS user's login ID value from the JWT body as “anOmsUser”. Note: This property is not used if a custom claim parser is configured
in the property, yfs.jwt.claimparser.class.
|
| yfs.jwt.defclaimparser.user.email.path Issuer specific property: yfs.jwt.<issuer name>.defclaimparser.user.email.path Important: If you are using IBM Sterling Order Management System Software on IBM Cloud (SaaS), do not modify default properties. Use the
issuer-specific property.
|
Valid values = <relative path of email address in the JSON
body> Default is not set. |
Path used to read the email as configured in the contact address of an existing OMS user from
the incoming JWT. This email must uniquely identify an OMS user. For example, if the JWT has a JSON
body as follows:, the property must be configured as follows to read the OMS
user:In this example, the property reads the email as configured in the OMS user's contact address email from the JWT body as “myemail@xyz.com”. Note:
|
| yfs.jwt.verify.audience | Valid values = <comma separated string values> Default = oms |
Determines the allowed audience names. If the incoming JWT contains “aud” claim,
the value of the “aud” claim is validated against the list of configured
audiences. Note: This property value is used only when the incoming JWT contains a claim
“aud”.
|
| yfs.jwt.verify.block.users | Valid values = <comma separated values of OMS users> Default is not set. |
Determines the OMS users, which are not allowed to be used for JWT authentication. If the OMS user obtained after JWT authentication is specified in this property, the authentication fails. |
| yfs.jwt.verify.block.issuers | Valid values = <comma separated values of JWT issuers> Default is not set. |
Determines the JWT issuers, which are not allowed to be used for JWT authentication. If the JWT issuer obtained after JWT parsing is specified in this property, the authentication fails. |
| yfs.jwt.verify.block.kids | Valid values = <comma separated values of key id> Default is not set. |
Determines the key ID values, which are not allowed to be used for JWT authentication. If the kid value obtained after JWT parsing is specified in this property, the authentication fails. |