SAML Introduction
We support 2 saml integrations. One for logging into a internal site and one for logging into HamiltonCMS.
SAML integration internal site
Needs
IdP Issuer
IdP Endpoint
Maybe external certificate for signing response
Requirements Saml Response
Encrypted Assertion
Signed SamlResponse
Send to IdP
(Maybe) Signing Certificate
SP Issuer
/saml/response endpoint
Field Reference
Field |
Type |
Required |
Description |
|---|---|---|---|
|
Text |
Yes |
Path where IdP posts
SAML Response. Usually
|
|
Bool |
Yes |
Validate assertion
timestamps. Set
|
|
Text |
Yes |
IdP SSO URL. AuthnRequest sent here |
|
Text |
Yes |
Expected |
|
Text |
Yes |
Internal site URL
(e.g.,
|
|
Text |
Yes |
External site URL
(e.g.,
|
`` external-ce rtificate`` |
FilePath? |
No |
Custom IdP certificate
path. Default:
|
|
Object? |
No |
Optional link shown on SAML login page (for applicant portals) |
Extra Link (optional)
{
"extra-link": {
"label": "Applicant Portal",
"url": "https://www.example.com/kandidaten-portaal"
}
}
Domain Matching
The login-destination and logout-destination determine
internal/external routing:
Request to
login-destinationdomain → treated as internal siteRequest to
logout-destinationdomain → treated as external site/saml/authuses this to enforce access control
SAML integration CMS
Needs From IdP
IdP Issuer
IdP Endpoint
Requirements Saml Response
Encrypted Assertion
Signed SamlResponse (by our certificate)
Send to IdP
Signing Certificate
SP Issuer
/saml/cms/login endpoint
Configuration possibilities
Field Reference
Field |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
`` enable-t ime-vali dation`` |
Bool |
Yes |
Validate assertion timestamps |
|
|
Text |
Yes |
IdP SSO URL for CMS login |
|
|
Text |
Yes |
Expected issuer in SAML Response |
|
`` issuer`` |
Text |
Yes |
SP issuer (this application’s identifier sent to IdP) (FQDN of external site) |
|
` first-n ame-iden tifier` |
Text |
No |
` …claims/ givenname` |
SAML attribute for first name |
|
Text |
No |
|
SAML attribute for last name |
|
Text |
No |
|
SAML attribute for email (user lookup key) |
|
Text |
No |
|
SAML attribute containing user roles |
` roles` |
[Text] |
No |
Achmea defaults |
Allowed role values. User denied if no match |
Attribute Identifiers
Default URIs for Azure AD / ADFS:
Attribute |
Default URI |
|---|---|
First name |
|
Last name |
|
|
|
Role/Group |
|
Override these if your IdP uses different attribute names.
Role-Based Access
CMS access requires the user’s role (from role-identifier attribute)
to match one of the values in roles array. User is rejected with 403
if no match.
There is no distinction within the SAML integration to specifiy different roles for the CMS. Either it is a match and you can login or not.
Configuration Differences: Site vs CMS
Aspect |
Site SAML |
CMS SAML |
|---|---|---|
Storage |
|
|
Certificate |
|
|
User provisioning |
Creates with internal groups |
Creates with CMS groups |
Role validation |
No |
Yes (required) |
Attribute mapping |
Project-specific hardcoded (Saml.Util) |
Configurable via settings |
Multiple configs |
Yes (array) |
No (single) |
Configurable singing certificate |
Yes |
No |