The following limitations are inherent to the design, not bugs to be fixed.
The installation and upgrade wizards use three libraries that you should remove for security reasons.
When your installation or upgrade is complete, remove the following
.jar files from the
These files are used only by the wizards. Removing them will have no effect on your installed instance.
Sometimes, installing AM for evaluation purposes will fail with a message similar to the following
if the JDK’s default truststore’s permissions are
$JAVA_HOME/lib/security/cacerts (Permission denied), refer to install.log under /path/to/install.log for more information.
To work around this issue, locate the truststore that your container is using and change its permissions to
$ sudo chmod 644 $JAVA_HOME/lib/security/cacerts
You can change the permissions to their original settings after you have installed AM.
The connection strings to the data or identity stores are static and not hot-swappable. This means that, if you expand or contract your DS affinity deployment, AM will not detect the change. To work around this, either:
Manually add or remove the instances from the connection string and restart AM or the container where it runs.
Configure a DS proxy in front of the DS instances to distribute data across many DS shards, and configure the proxy address in the connection string.
The AM admin UI supports SAML v2.0 IDP and SP entities only. After upgrade, entities that don’t have IDP or SP roles are listed, but you can’t inspect or edit them in the UI. AM displays an error when you try to access these entities.
Entities that contain roles other than IDP or SP will only display the IDP or SP roles.
AM doesn’t support the following functionality, as described in the Web Authentication specification:
Refer to MFA: Web Authentication (WebAuthn) for more information.
The RADIUS service only supports Commons Audit Logging and can’t use the older Logging Service, available in releases before OpenAM 13.0.0.
In this version of AM, administrators can use the AM admin UI as follows:
Delegated administrators with the
Realm Adminprivilege can access full AM admin UI functionality within the realms they administer. In addition, delegated administrators in the Top Level Realm who have this privilege can access AM’s global configuration.
Administrators with fewer privileges, such as the
Policy Adminprivilege, can’t access the AM admin UI.
The top-level administrator, such as
amAdmin, has access to full AM admin UI functionality in all realms and can access AM’s global configuration.
AM ignores keys specified in JWT headers, such as
jwe. Configure the public keys or certificates in
AM instead, as explained in the relevant sections of the documentation.
Different AM versions within a site aren’t supported. Don’t run different versions of AM together in the same AM site.
Don’t use special characters in policy, application or referral names (for example, "my+referral"). AM returns a 400 Bad Request error. The special characters are:
double quotes (")
plus sign (+)
less than (<)
greater than (>)
AM can only import XACML 3.0 files that were created by an AM instance, or that have had minor manual modifications, due to the reuse of some XACML 3.0 parameters for non-standard information.
When you configure IDM to delegate authentication to AM using the Full Stack sample, you must set up a cross-origin resource
sharing (CORS) filter. However, if you use a CORS filter based on the
org.forgerock.openam.cors.CORSFilter filter class,
you will see errors such as
Unexpected End of JSON Input.
To work around this problem, configure AM’s
web.xml file as described in Enabling CORS Support in the Installation Guide. Instead
of using a filter based on the
org.forgerock.openam.cors.CORSFilter filter class, use a CORS filter specific to the
AM web container you are using. For example, for Apache Tomcat, use a filter based on the
Example CORS filter for Apache Tomcat
Add a filter clause similar to the following to your
web.xml file. Specify the correct URLs for your deployment in the
<filter> <filter-name>CORSFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> <init-param> <param-name>cors.allowed.headers</param-name> <param-value>Content-Type,X-OpenIDM-OAuth-Login,X-OpenIDM-DataStoreToken,X-Requested-With,Cache-Control,Accept-Language,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,X-OpenAM-Username,X-OpenAM-Password,iPlanetDirectoryPro</param-value> </init-param> <init-param> <param-name>cors.allowed.methods</param-name> <param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</param-value> </init-param> <init-param> <param-name>cors.allowed.origins</param-name> <param-value>https://openam.example.com:8443,https://openidm.example.com:8443</param-value> </init-param> <init-param> <param-name>cors.exposed.headers</param-name> <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials,Set-Cookie</param-value> </init-param> <init-param> <param-name>cors.preflight.maxage</param-name> <param-value>10</param-value> </init-param> <init-param> <param-name>cors.support.credentials</param-name> <param-value>true</param-value> </init-param> </filter>
Add the following filter-mapping clause to your
<filter-mapping> <filter-name>CORSFilter</filter-name> <url-pattern>/json/*</url-pattern> </filter-mapping>