SAML web single sign-on (SSO) trust association interceptor (TAI) custom properties
The following tables list the custom properties for the Security Assertion Markup Language (SAML) trust association interceptor (TAI). You can define these properties in the custom properties panel for the SAML TAI using the administrative console.
To assign unique property names that identify each possible single sign-on (SSO) service provider
(SP) partner, an sso_<id>
is embedded in the property name and used to group the
properties that are associated with each SSO partner. The sso_<id>
s are numbered
sequentially for each SSO service provider partner.
- Service provider properties - these properties apply to a service provider and are grouped for
each SSO service provider partner under a unique
sso_<id>
. You replace<id>
with a number to produce a uniquesso_<id>
, such assso_1.sp.acsUrl
. If you have two providers, you would produce another set withsso_2.sp.acsUrl
. - Global properties - these properties are applicable to all SSO partners that are configured for the SAML TAI.
- IdP properties - these properties are applicable to identity providers that are configured for
the SAML TAI. To assign unique property names that identify each identity provider partner, an
idp_<id>
is embedded in the property name and used to group the properties that are associated with each SSO IdP partner.
sso_<id>.sp.principalName
custom property. If there is no
NameID in the SAML assertion and the sso_<id>.sp.principalName
custom property
is not configured, the SAML Web SSO TAI will not allow access to the protected resource.The following table describes the service provider SAML TAI custom properties:
Property Name | Values | Description |
---|---|---|
sso_<id>.sp.acsUrl |
This property is required and does not have a default value. You can
specify one of the following values:
|
This property specifies the URL of the ACS or business application. If you
need to have multiple, similar entry points for your SAML workflows, you can specify a URL with a
wildcard at the end of the string instead of a specific URI pattern string for this property. For example:
The value for each |
sso_<id>.sp.login.error.page |
This property does not have a default value, but a value is required to be set when requests are to be processed using the SP-initiated web SSO flow. |
This property specifies the error page, IdP login page, or custom mapping class to which an
unauthenticated client request is redirected. The custom mapping class can implement For both SP-initiated SSO and identity provider mapping, when requests go the application server first, they are redirected to the IdP for the user to log in. |
sso_<id>.sp.acsErrorPage |
This property defaults to the value for sso_<id>.sp.login.error.page . | This property is used to specify an error page to use if the SAML assertion fails validation or authentication. |
sso_<id>.sp.filter |
You can specify any filter value. The default value is |
This property specifies a condition that is checked against an HTTP request to select an SP to process the request. For more information on this property, see the SAML TAI filter property section. The default filter intercepts all requests that are sent to the TAI, except requests to admin applications. If a request matches the filter condition for more than one SP, the request is rejected. |
|
You can specify any URL value for this property. This URL cannot be the single logout (SLO) endpoint of the IdP. |
The logout request is redirected to the URL that is specified on this property
when an HttpServletRequest.logout or form logout is performed. |
sso_<id>.sp.targetUrl |
This property does not have a default value. | This property specifies the URL of the target application. It is used when
RelayState is not present in the client request. |
sso_<id>.sp.useRelayStateForTarget |
You can specify one of the following values:
|
This property specifies whether the RelayState value received
in the client request should be used as the URL of the target application or not. If this property
is set to false, the sso_<id>.sp.targetUrl property is used as the URL of the
target application. |
sso_<id>.sp.idMap |
You can specify one of the following values:
|
This property specifies how the SAML user is mapped to the Subject. |
sso_<id>.sp.principalName |
You can specify any SAML attribute name. This property does not have a default value. |
This property specifies the SAML attribute that is used as the Subject principal. By default, the value for the Subject principal is obtained from the |
sso_<id>.sp.uniqueId |
You can specify any SAML attribute name. This property does not have a default value. |
This property specifies the SAML attribute that is used as the Subject
By default, the value for the |
sso_<id>.sp.groupName |
You can specify any SAML attribute name. This property does not have a default value. | This property specifies the SAML attribute that contains the group memberships
for the user and is used with IDAssertion only. The groups are added to the Subject for the user
according to the value for the sso_<id>.sp.groupMap property. |
sso_<id>.sp.groupMap |
This property does not have a default value. You can specify one of the
following values:
|
This property specifies how the groups in the SAML assertion are mapped to
WebSphere groups and is used with IDAssertion only. The sso_<id>.sp.groupName
property must be set to a value to pick up the groups from the SAML assertion. By default, when
IDAssertion is used, groups are not added to the Subject for the SAML user. |
sso_<id>.sp.realmName |
This can be any string value. By default, this property is set to the SAML Issuer name. | This property specifies any SAML attribute and is used in conjunction with
realmNameRange . The value of this attribute is used as the Subject realm. If this
realm does not exist in the list of realms specified by realmNameRange , the realm
is rejected. |
sso_<id>.sp.realmNameRange |
This property has no default value. | This property specifies a list of allowed realm names and is used in
conjunction with realmName . See the description of
sso_<id>.sp.realmName . |
|
This custom property does not have a default value. | This property specifies a realm name and is used to override the default
realm. This property also overrides the realmName property.Set the value for this property to |
sso_<id>.sp.wantAssertionsSigned |
You can specify one of the following values:
|
If this property is set to false, the SAML assertion is
not required to be signed and the signature is not validated. When the value for this property is true, either sso_<id>.sp.trustAnySigner must be set to true or sso_<id>.sp.trustStore set to a valid managed keystore. |
sso_<id>.sp.trustAnySigner |
You can specify one of the following values:
|
This property specifies whether the signer certificate of the SAML assertion is verified for trust validation. If this property is set to true, any signer certificate is trusted. |
sso_<id>.sp.trustStore |
On a single server, the default trustStore is
NodeDefaultTrustStore , otherwise, it is
CellDefaultTrustStore . |
This property specifies the truststore for validating the SAML signature. It
specifies the name of a managed keystore. Examples:
|
sso_<id>.sp.trustedAlias |
This property does not have a default value. | If this property is specified, the certificate that is specified by this alias
is used to validate the signature in the SAML assertion. This certificate overrides any certificate
value that might be present in the SAML assertion. If the signature in the incoming SAML assertion
in the SAMLResponse does not include the KeyInfo element, you must
specify this property to verify the signature. |
sso_<id>.sp.keyStore |
This property is used to receive and process On a single server, the default keyStore is |
This property specifies the name of the managed keystore that contains the
private key for decrypting an encrypted SAML assertion. Examples:
|
sso_<id>.sp.keyAlias |
This property is required to receive and process EncryptedAssertions and does not have a default value. | This property specifies the key alias for decrypting the SAML assertion. |
sso_<id>.sp.keyName |
This property is required to receive and process EncryptedAssertions and does not have a default value. | This property specifies the key name for decrypting the SAML assertion. |
sso_<id>.sp.keyPassword |
This property is required to receive and process EncryptedAssertions and does not have a default value. | This property specifies the key password for decrypting the SAML assertion. |
sso_<id>.sp.allowedClockSkew |
This property does not have a default value. | This property specifies, in minutes, the time that is added to the token expiration time of the SAML assertion sent by the IdP. |
|
This property does not have a default value. An example setting is UTF-8. | This property specifies the character encoding that is used to override the
setting in the HTTPServletRequest . |
sso_<id>.sp.cookiegroup |
This property does not have a default value. | This property specifies a tag to be added to an ltpa cookie for the configured SAML SSO partner. When a web request is received with an ltpa cookie, the ltpa cookie is valid only if the tag matches this value. |
sso_<id>.sp.defaultRealm |
You can specify one of the following values:
|
This custom property specifies whether the Issuer or the NameQualifier from the SAML assertion is used as the default realm. |
|
You can specify one of the following values:
|
When this property is set to true, the original URL for redirect is used, without decoding the URL. |
sso_<id>.sp.enforceTaiCookie |
You can specify one of the following values:
|
This property is used to indicate if the SAML TAI should check if an LTPA
cookie is mapped to a Subject created for the SSO partner. Consider the situation where you set
this property to When
this property is set to true (the default), the
|
sso_<id>.sp.EntityID |
By default, this property is set to the value of sso_<id>.sp.acsUrl. | This property is used to verify AudienceRestriction in the
SAML assertion. |
sso_<id>.sp.includeCacheKey |
You can specify one of the following values:
|
This property indicates that the TAI is to generate a custom
authCachefor the WebSphere Subject that is created for the request. When this
property is set to false, core security generates the cache key. This
property must be set to true when the When the
|
sso_<id>.sp.includeToken |
You can specify one of the following values:
|
This property indicates that the TAI includes a SAMLtoken object, which is
created from the SAML assertion that is received from the identity provider, in the WebSphere
Subject. This property must be set to true (the default) in each of the
following conditions:
If you require a When the |
sso_<id>.sp.interceptAdminApp |
Pick one of the valid values for this custom property:
|
Set this property to true to enable an SP to intercept an
admin application, such as the administrative console. When you set this property to
true , make sure to set your filters so that command-line applications such as
wsadmin are not intercepted. By default, even if a filter is set to intercept an
admin application, the TAI does not intercept it unless this property is set to
true . |
sso_<id>.sp.preserveRequestState |
You can specify one of the following values:
|
Set this property to false if you do not want the TAI
to save the original request URL and the parameters before it redirects the request to the IdP for
authentication. When you set this property to false, the
WasSamlSpReqURL cookie is not used to restore a request. You must ensure that
one of the following actions is taken.
|
sso_<id>.sp.preventReplayAttack |
You can specify one of the following values:
|
This property is used to specify whether the SAML TAI should prevent two
identical SAML assertions from being sent in client requests. This property is used in conjunction
with the global property replayAttackTimeWindow . |
sso_<id>.sp.preventReplayAttackScope |
This property does not have a default. You can specify the following value:
|
By default, the SAML TAI uses a distributed cache to store SAML assertion IDs for preventing replay attack. If you set this property to server, the SAML TAI uses a local cache instead. |
sso_<id>.sp.redirectToIdPonServerSide |
You can specify one of the following values:
|
This property is used to indicate that the TAI should redirect to the IdP
itself. Set this property to false to do a client-side redirect. Set this
property to false if URL fragments are being lost on the redirect; the TAI
uses JavaScript to do a client-side redirect.
|
sso_<id>.sp.retryOnceAfterTrustFailure |
You can specify one of the following values:
|
Set this property to true to enable the run time to reload the trust store after trust validation has failed. This allows the trust store to be updated with new IdP certificates while the application server is running. |
|
You can specify one of the following values:
|
When this property is set to true and a request is redirected
to an IdP, the TAI uses JavaScript. When JavaScript is not used, any fragments that are present on
the original inbound request are lost.
|
sso_<id>.sp.userMapImpl |
This property does not have a default value. | This property specifies the name of a custom user mapping module class. It is
used to map a user ID in the SAML assertion to another user ID that exists in the local user
registry. The custom mapping class must implement the
If, when a user mapping error occurs, you want to use an error page other than what
is set on the sso_<id>.sp.acsErrorPage custom property, use the
|
sso_<id>.sp.X509PATH |
This property does not have a default value. | This property specifies the certificate store that is used for the intermediary certificates used in validating the SAML signature. |
sso_<id>.sp.CRLPATH |
This property does not have a default value. | This property specifies the certificate store that is used for certificate revocation lists (CRLs) used in validating the SAML signature. |
The following table describes the global SAML TAI custom properties:
Property name | Values | Description |
---|---|---|
targetUrl |
You can specify any URL value. | This property is overridden by sso_<id>.sp.targetUrl . This
is the default target URL after successful validation of the SAMLResponse when
there is no RelayState received from the IdP. |
useRelayStateForTarget |
You can specify one of the following values:
|
This property is overridden by
sso_<id>.sp.useRelayStateForTarget . This is used to indicate if the
RelayState should be used as the target URL. |
|
You can specify one of the following values:
|
Set this property to true to enable the TAI to use
JavaScript when a request is redirected to an IdP. When you do not use JavaScript, any fragments
that are present on the original inbound request are lost.
|
allowedClockSkew |
You can specify any positive number. The default is three minutes. | This property is overridden by
sso_<id>.sp.allowedClockSkew . This is used to specify the allowed clock skew in
minutes when validating the SAML assertion. |
enforceTaiCookie |
You can specify one of the following values:
|
This property is overridden by
sso_<id>.sp.enforceTaiCookie . This is used to indicate if the SAML TAI should
check if an LTPA cookie is mapped to a Subject created for the SSO partner.See the table entry
for |
|
You can specify any URL value. This URL cannot be the single logout (SLO) endpoint of the IdP |
This property is overridden by sso_<id>.sp.logoutUrl . The
logout request is redirected to the URL that is specified on this property when an
HttpServletRequest.logout or form logout is performed. |
preventReplayAttackScope |
This property does not have a default. You can specify the following value:
|
By default, the SAML TAI uses a distributed cache to store SAML assertion IDs for preventing replay attack. If you set this property to server, the SAML TAI uses a local cache instead. |
replayAttackTimeWindow |
You can specify any integer value. The default value is 30. | This property specifies the time, in minutes, within which the second request
is rejected if two identical SAML assertions are received by the TAI. See also
sso_<id>.sp.preventReplayAttack . |
retryOnceAfterTrustFailure |
You can specify one of the following values:
|
Set this property to true to enable the run time to reload the trust store after trust validation has failed. This allows the trust store to be updated with new IdP certificates while the application server is running. |
redirectToIdPonServerSide |
You can specify one of the following values:
|
This property is overridden by
sso_<id>.sp.redirectToIdPonServerSide . This property is used to indicate that
the TAI should redirect to the IdP itself. Set this property to false to do a
client-side redirect. Set this property to false if URL fragments are being
lost on the redirect; the TAI uses JavaScript to do a client-side redirect.
|
The following table describes the IdP SAML TAI custom properties:
Property Name | Values | Description |
---|---|---|
sso_<id>.idp_<id>.SingleSignOnUrl |
You can specify any URL value. |
This custom property specifies the URL of the SSO service of the IdP. This property is used when the |
sso_<id>.idp_<id>.allowedIssuerDN |
This custom property does not have a default value. | This custom property specifies the Subject DN of the certificate who is
allowed to sign the SAML assertion sent by the IdP. If the SAML assertion is not signed by this
certificate, the token is rejected. If this property is specified, the
sso_<id>.sp.wantAssertionsSigned custom property must be true. Use this property
when, instead of IdP's signer certificate, you have the signer certificate's Issuer in the trust
store. This will prevent you from allowing all signers with certificates issued by the same
Issuer. |
sso_<id>.idp_<id>.allowedIssuerName |
This custom property does not have a default value. | This custom property specifies the value of the
<saml:Issuer> Issuer element in the SAML assertion. The SAML assertion received
from the IdP is rejected if the Issuer in the token does not match this value. |
SAML TAI filter property
The sp.filter
SAML TAI filter property is used when a client invokes a protected
service provider application directly, without authenticating to the IdP. The filter property is
usually used in conjunction with the sp.login.error.page
property to redirect an
unauthenticated client request to the URL address specified by the
sp.login.error.page
property. The sp.filter
properties do not
apply to a SAMLResponse. The request URL in a SAMLResponse is evaluated against the
sp.acsURL
.
The SAML TAI filter properties are supported by the OAuth, OIDC, and SAML Web Inbound TAIs.
- Input
- The input element usually specifies an HTTP header name, but can also be a keyword to specify a special input element. See table 4 for the supported special input elements.
- Operator
- The operator element specifies the filter operator to compare the input element to the comparison value. See table 5 for the list of filter operators.
- Comparison value
- The comparison value element specifies the value that the information from the HTTP request is compared to. The comparison value cannot contain any characters that are included in the filter operators that are shown in table 5.
The input element identifies an HTTP request header field to extract from the request and its value is compared with the value that is specified in the filter property according to the operator specification. If the header field that is identified by the input element is not present in the HTTP request, the condition is treated as not being met. Any HTTP request header field can be used as the input element in the filter condition. Refer to the HTTP specification for the list of valid headers.
Property name | Description |
---|---|
request-url |
This filter compares against the URL address that is used by the client application to make
the request. This value includes the query string. For example:
https://acme.com/app/folder/page.html?abc=123 |
remote-address |
This filter compares against the TCP/IP address of the client application that sent the HTTP request. |
applicationNames |
This filter compares against the name of the application to which the HTTP request belongs. |
|
This filter compares against the part of the request URL from the protocol name up to the
query string of the HTTP request. This value does not include the query string. For example, the
request-uri is /app/folder/page.html for the
https://acme.com/app/folder/page.html?abc=123 URL.The
|
Operator | Condition | Examples |
---|---|---|
== |
The input element must be equal to the comparison value. This is the only operator that specifies an exact match. | From==jones@my.company.com |
%= |
The input element must contain the comparison value. |
|
^= |
The input element must contain one of the comparison values. This is the only operator that can be combined with the | operator. If only one value is specified, this operator is equivalent to %=. | request-url^=urlApp1|urlApp2| urlApp3 |
!= |
The input element must not contain the comparison value. | request-url!=test105 |
|
The input element must match the comparison value as a regular expression. |
|
> |
The input element is greater than the comparison value. | remote-address>192.168.255.130 |
< |
The input element is less than the comparison value. | remote-address<192.168.255.135 |
; |
Logical AND Operator | request-url!=test105;From==jones@my.company.com5 |
|
Logical OR Operator | request-uri~=/ibm/console(?!/images/)(.*).*||request-url!=test105;From==jones@my.company.com||request-url%=company.com/urlApp1 |
Before version 8.5.5.23, no logical OR operator exists that you can use with filter properties.
Examples
From
as the input with samluser@xyz.com
as the comparison value
and ==
as the
operator:sso_1.sp.filter=From==samluser@xyz.com
In
this case, if a client request contains an HTTP header field From
with a value of
samluser@xyz.com
, the SAML TAI selects the SSO service provider partner of this
sso_1
filter for processing the client request.ivtlanding.jsp
as the comparison value and %=
as the
operator:sso_2.sp.filter=request-url%=ivtlanding.jsp
In
this case, if the URL of the target application invoked by the client contains the string
ivtlanding.jsp
, the SAML TAI selects the SSO partner of this sso_2
filter for processing the client request.DefaultApplication
as the comparison value and ==
as the
operator:sso_3.sp.filter=applicationNames==DefaultApplication
In
this case, if the name of the target application invoked by the client application is
DefaultApplication
, the SAML TAI selects the SSO partner of this
sso_3
filter for processing the client request.