Skip to content

Fortified IDDocs

SAML module

Core module when Fortified ID Access should act as a SAML Identity Provider (IdP) or SAML Broker for SAML Service Providers (SPs).

The SAML module is responsible for:

  • loading, maintaining & generating SAML metadata
  • generating outbound SAML messages (assertions, authentication & logout requests)
  • consuming and validating incoming SAML requests
NameDescriptionDefault valueMandatory
metadata_cacheOptional location to where remote metadata loaded, using HTTP, should be cached. The target directory folder must exist.<server_root>false
enable_http Should metadata be available using HTTP. truefalse
internal_http_destinationId of the internal HTTP module to handle HTTP-based metadata loading/consumption. defaultfalse
ignore_signature_validationDisabled signature validation on incoming AuthnRequest & LogoutOutRequest.falsefalse
reload_meta_intervall_millisHow often in milliseconds a reload should occur.300000false
reload_meta_start_delay_millisHow long after startup reloading of metadata should start reloading.20000false
metadataConfiguration for consuming metadata and SP settingsN/Afalse
app_profileConfiguration of SAML application profilesN/Afalse
false

Metadata to be consumed by remote party is generated based of a template file. It is referenced using the parameter "config.metadata_template.metadata_file_path". Administration of this file is handled outside the system and must include the necessary information such as entity id, binding location etc.

Signing of metadata, injecting certificates used and adding of SLO url is handled by the module.

NameDescriptionDefault valueMandatory
idId to be used in URL when getting meta data. Id is used to reference the meta data.N/Afalse
metadata_file_path
Location of the template used.N/Afalse
sign_metadata_keystore
Object for signing the meta data when exposed to clients.true

A single object used for signing the meta data

NameDescriptionDefault valueMandatory
path
Location of the p12 key storeN/Atrue
password
password of the key storeN/Atrue
alias
alias used to reference in the store. N/A - Mandatory if multiple entries are located in the store.true
key_password
Password to the private key.N/Atrue

Configuration, array, for key pairs used to sign SAML messages. Multiple key stores is supported. Each entity is placed in the sign_ref array. Key store must be in PKCS#12 format.

NameDescriptionDefault valueMandatory
path
Location of the p12 key storeN/Atrue
password
password of the key storeN/Atrue
alias
alias used to reference in the store. N/A - Mandatory if multiple entries are located in the store.true
key_password
Password to the private key.N/Atrue

Same as sign ref, sign_ref, but for encryption.

See sign ref properties.

Setting up trust with an external party is done by consuming it's metadata. This can be done by either a file or using an url.

Name Description Default value Mandatory
path File path to the meta data N/A Either path or url.
url HTTP url to the metadata. N/A Either path or url.
validation_pem_path Path certificate used for metadata validation N/A No

Meta data validation can be done setting validation_pem_path. This will only work for data loaded over HTTP.

Setting validation_pem_path enforces mandatory validation. If the metadata lacks a signature, it will be omitted.

In order to get metadata generated by the system point your browser to:

http://<host>:<port_if_any>/saml/metadata/<config.metaDataTemplate.id>

Integrity can use a HSM to sign and encrypt messages . It is done through JAVA PKCS#11 standard interface.

Configuration elements are to be located at same level as "keystore" property.

NameDescriptionDefalut valueMandatory
provider_pathFile path to the HSM provider implementation file. N/Atrue
pinHSM pin. N/Atrue
aliasAlias handle. N/Atrue
key_passwordPrivate key password. Use same value as pin if missing. N/Atrue
certificate_pem_pathIf present Integrity will read the certificate from file. Must be in PEM format. If missing, certificate is read from HSM. N/Afalse

It’s possible to integrate with Thales Luna HSM using the Thales JSP provider. This can be a fallback option if the generic PKCS#11 integration fails.

Access authenticates to the selected Thales Luna slot as Crypto User for routine signing and encryption operations. Configure pin with the Crypto User PIN; Crypto Officer credentials are not required. If Crypto User authentication fails, Access stops keystore initialization instead of attempting to load the keystore with another role.

For more info see Thales doc:

https://thalesdocs.com/gphsm/luna/7/docs/network/Content/sdk/java/jsp_overview_install.htm

Ensure adding LunaProvider.jar to java class path. Add knowledge to libLunaAPI.so/LunaAPI.dll "java.library.path". Typically setting -Djava.library.path pointing to directory where the file is located.

NameDescriptionDefalut valueMandatory
slotHSM slotN/Atrue
pinCrypto User PIN for the selected HSM slot.N/Atrue
aliasAlias handle. N/Atrue

Failing to get metadata for the first time will result in retries every 20 seconds until metadata is loaded.

The metadata target is checked at a set interval (every 20 minutes by default) for information updates. Metadata is reloaded based on valid until, if present. Otherwise, it is reloaded every four hours.

The XML metadata template has some understanding of "expansion". It knows the concept of globals. By using globals, it will allow configuration like "<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="${globals.idp1.idp_entityid}"".

Note that only the globals namespace is supported.