Benjamin KAHANE
- Updated
Security Assertion Markup Language (SAML) is an open standard for exchanging authentication and authorization data between service providers and identity providers.
SAML transactions use Extensible Markup Language (XML) for standardized communications between the identity provider (IdP) and service providers (SPs). SAML allows you to log into multiple applications, using the same login credentials.
Dalet Flex has been fully tested against a number of IdPs, and details of how to configure Flex SSO using each of these is provided in the corresponding documentation sub-pages.
In addition to the above, we have also successfully performed basic validation using the following SAML IdPs for Flex.
Please contact your Dalet representative at the earliest opportunity if you intend to integrate with a different IdP.
Other IdPs may work with Flex "out-of-the-box" if they are fully compliant with the SAML standards; however, in some
cases, development work may be required.
If using an IdP URL for dynamic IdP metadata retrieval, rather than providing static IdP metadata XML to Flex, then the Flex Login App must be able to verify the corresponding IdP certificate. As such, this certificate must be valid, in-date, and signed by a recognised certificate authority. If the IdP uses a self-signed certificate, please contact your Dalet Flex representative for details of how to make your own self-signed certificates available to and trusted by Flex services.
The following diagram provides a high level overview of the SAML authentication flow:
SAML authentication must be configured from both sides: in the external IdP, and in Dalet Flex Core.
The configuration for each IdP varies, but in all cases:
A Single Sign-On URL is a url that an IdP calls back upon authentication success.
This takes a form like: https://{account}.{your-flex-deployment.com}/login/saml/SSO.
An audience restriction is used to identify a specific app.
Unless customised through Consul KVs, this takes the following value: urn:ooyala:flex:flex-login-app.
For authentication initiated at the IdP (rather than on Flex) this provides the default redirect destination to which users will be routed upon successful authentication.
This could be like https://{account}.{your-flex-deployment.com} for Flex Core, or like
https://{account}.{your-flex-deployment.com}/fmp/index/ for FlexMAM.
Each IdP needs to configure below list of user attributes & claims:
| Attribute Names | Required or Optional? |
| login | Optional since Flex 2022.11.x |
| Required | |
| firstName | Required |
| lastName | Required |
| flexAccountUuid | Required |
| externalUniqueUserId | Optional since Flex 2024.7.x |
Note: By default, Flex users will be created with the email as their username. The username can optionally be overridden by passing the login attribute.
-----BEGIN CERTIFICATE-----
MIIDUjCCAjqgAwIBAgIEUOLIQTANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQGEwJGSTEQMA4GA1UE
... <truncated> ...
bHwSoBy5hLPNALaEUoa5zPDwlixwRjFQTc5XXaRpgIjy/2gsL8+Y5QRhyXnLqgO67BlLYW/GuHE=
-----END CERTIFICATE-----
If debugging SAML login issues, two extra tools will be useful:
Kibana will also contain messages for any issues. Look for messages being generated by the flex-login-app and the flex-authentication-service in Kibana for extra information on any issues.
This depends on the Flex version.
From Flex 2021.12 up to2025.05 the filter expression to use is
#{event.user.userType != "EXTERNAL"}
From Flex installation (2025.6) the filter expression in use is...
#{event.user.userType != "External"}For more information on Spring Expressions for use in Event filters, see Spring Expressions.
Legacy Flex using EL and not SpEL use the expression:
${event.mioObject.entity.authenticationProvider.displayName != "External"}
Comments
5 comments
FYI... SAML Message Decoder is no longer available/supported by Google Chrome. One alternative is SAML-tracer.
Brett CHAMBERS Thank you very much. Updated!
Hello, i don't find anymore the information about the filter to use in reset password event handler. Is it still relevant ?
${event.mioObject.entity.authenticationProvider.displayName != "External"}It depends on your Flex version. I suspect that expression is applicable for an old Flex system (it's using EL and not SpEL).
From Flex 2021.12, the filter expression to use was...
#{event.user.userType != "EXTERNAL"}I can see in a more recent Flex installation (2025.6) the filter expression in use is...
#{event.user.userType != "External"}For more information on Spring Expressions for use in Event filters, see this article.
https://support.dalet.com/hc/en-us/articles/5894896410269-Spring-Expressions#Examples&Of&Filters&For&Event&Handlers
Brett CHAMBERS, Nicolas KIRCHHOFFER updated accordingly
Please sign in to leave a comment.