Connecter Context Handler / FKA avec SAML 2.0
FoxIDs peut être connecté à Context Handler avec une méthode d’authentification SAML 2.0.
Context Handler est un courtier d’identité danois reliant les municipalités danoises dans une fédération commune, en danois appelé Fælleskommunal Adgangsstyring (FKA).
Context Handler est connecté comme Identity Provider (IdP) SAML 2.0 basé sur OIOSAML 3 et OCES3 (RSASSA-PSS).
En configurant une méthode d’authentification SAML 2.0 et un enregistrement d’application OpenID Connect, FoxIDs devient un pont entre SAML 2.0 et OpenID Connect. FoxIDs gère alors la connexion SAML 2.0 comme Relying Party (RP) / Service Provider (SP) et vous n’avez qu’à gérer OpenID Connect dans votre application. Si nécessaire, vous pouvez sélectionner plusieurs options de connexion (méthodes d’authentification) depuis le même enregistrement d’application OpenID Connect.
En test, vous pouvez vous connecter avec l’IdP de test FoxIDs.

Ou configurez un environnement FoxIDs comme Identity Provider de test pour Context Handler avec un enregistrement d’application SAML 2.0 et authentifiez des utilisateurs de test.
Context Handler peut être configuré sur OIOSAML 2 ou OIOSAML 3 avec OCES3 (RSASSA-PSS) et FoxIDs prend en charge les certificats requis et permet de prendre en charge NSIS.
Vous pouvez tester la connexion Context Handler avec la web app d’exemple en ligne (documentation des exemples) en cliquant sur
Log inpuisDanish Context Handler TESTpour l’environnement de test (sélectionnezFoxIDs - test-corpsur la page de connexion Context Handler) ouDanish Context Handlerpour la production.
Consultez la configuration d’exemple Context Handler dans FoxIDs Control : https://control.foxids.com/test-corp
Obtenez un accès en lecture avec l’utilisateurreader@foxids.comet le mot de passegEh#V6kSw, puis sélectionnez l’environnementcontext-handler,context-handler-testoucontext-handler-idp-test.
L’exemple est configuré avec des environnements séparés pour l’intégration Context Handler SAML 2.0.
Documentation Context Handler / FKA :
- Context Handler guide.
- Portail d’administration
- Application de test Context Handler
Transformez la revendication DK privilege XML en revendication JSON.
Environnement séparé
Context Handler exige que chaque connexion dans un environnement (test ou production) utilise un certificat OCES3 unique.
Par conséquent, envisagez de connecter Context Handler dans des environnements séparés où les certificats OCES3 peuvent être configurés.
Créez un nouvel environnement dans FoxIDs Control Client :
- Trouvez la section Environments en haut au milieu
- Cliquez sur la liste déroulante
- Cliquez sur New environment

- Ajoutez le Name
- Cliquez sur Create
Si vous configurez un environnement de test et un environnement de production, ils doivent être placés dans des environnements séparés. Si vous configurez un Identity Provider de test pour Context Handler, il doit également être placé dans un environnement séparé et avoir un certificat OCES3 unique.
Vous pouvez facilement connecter deux environnements dans le même tenant avec un Environment Link.
Certificat
Context Handler exige que toutes les requêtes (authn et logout) soient signées avec des certificats OCES3 de production dans tous les environnements. Il n’est PAS possible d’utiliser un certificat émis par une autre autorité de certification, un certificat auto-signé ou des certificats OCES3 de test.
Un certificat OCES3 est valide pendant trois ans. Après cela, il doit être mis à jour manuellement.
Ajoutez le certificat OCES3 .P12 dans FoxIDs Control Client :
- Sélectionnez (ou créez) un environnement séparé à utiliser pour Context Handler en tant qu’Identity Provider ou un Identity Provider de test pour Context Handler
- Sélectionnez l’onglet Certificates
- Si les certificats contenus ne sont pas configurés, cliquez sur la flèche vers le bas du bouton Swap certificate puis, dans la section Contained certificates, cliquez sur Change container type
- Cliquez sur le certificat principal
- Ajoutez le mot de passe dans Optional certificate password
- Téléversez le certificat OCES3
.P12

Il est ensuite possible d’ajouter un certificat secondaire et de basculer entre le certificat principal et secondaire.
Configurer Context Handler comme Identity Provider
Ce guide décrit comment configurer Context Handler comme Identity Provider SAML 2.0 et se conformer à OIOSAML3.
Vous devez configurer le certificat OCES3 avant de suivre ce guide.
1 - Commencez par créer une méthode d’authentification SAML 2.0 dans FoxIDs Control Client
- Sélectionnez l’onglet Authentication
- Cliquez sur New authentication puis Identity Provider (SAML 2.0)
- Ajoutez le Name par ex.
Context Handler - Ajoutez les métadonnées IdP Context Handler dans le champ Metadata URL
Métadonnées test :https://n2adgangsstyring.eksterntest-stoettesystemerne.dk/runtime/saml2/metadata.idp
Métadonnées production :https://n2adgangsstyring.stoettesystemerne.dk/runtime/saml2/metadata.idp - Cliquez sur Create

- Sélectionnez Show advanced
- Définissez Logout response binding sur Redirect
- Configurez un Custom SP issuer, l’émetteur peut éventuellement commencer par
https://saml.. L’émetteur dans cet exemple esthttps://saml.foxids.com/test-corp/context-handler-test/ - Optionnellement, définissez Certificate validation mode sur Chain trust si le certificat racine OCES3 est approuvé sur votre plateforme Définissez Certificate revocation mode sur Online
- Sélectionnez Yes pour Add logout response location URL in metadata
- Sélectionnez Yes pour Include the encryption certificate in metadata
- Définissez NameID format in metadata sur
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

- Dans Attribute consuming service in metadata, cliquez sur Add attribute consuming service et ajoutez le Service name
- Ajoutez toutes les revendications que vous souhaitez recevoir comme attributs demandés au format
urn:oasis:names:tc:SAML:2.0:attrname-format:uri. Optionnellement, marquez chaque attribut comme requis.
Les revendications suivantes sont le plus souvent utilisées :
https://data.gov.dk/model/core/specVersionhttps://data.gov.dk/concept/core/nsis/loahttps://data.gov.dk/model/core/eid/professional/cvrhttps://data.gov.dk/model/core/eid/professional/orgNamehttps://data.gov.dk/model/core/eid/cprNumberhttps://data.gov.dk/model/core/eid/emailhttps://data.gov.dk/model/core/eid/firstNamehttps://data.gov.dk/model/core/eid/lastNamehttps://data.gov.dk/model/core/eid/privilegesIntermediate

- Dans Contact persons in metadata, cliquez sur Add contact person puis Administrative pour ajouter une personne de contact administrative
- Cliquez sur Update
- Remontez en haut de la méthode d’authentification SAML 2.0
- Trouvez les métadonnées SP dans SAML 2.0 method URL, dans ce cas https://foxids.com/test-corp/context-handler-test/(g9ey6lfw)/saml/spmetadata.
- L’URL de métadonnées SP est utilisée pour configurer un système utilisateur Context Handler (DK: brugervendt system).
2 - Ensuite, allez sur le portail d’administration Context Handler en Test ou Production
- Sélectionnez IT-systems (DK: IT-systemer)
- Cliquez sur Add IT-system (DK: Tilslut it-system)
- Remplissez les champs et sélectionnez User system (DK: Brugervendt system)
- Allez dans l’onglet User system (DK: Brugervendt system)
- Sélectionnez Context Handler with NSIS et retirez la sélection de Context Handler (without NSIS)
- Sélectionnez OIOSAML3 comme profil OIOSAML et niveau NSIS
- Ajoutez l’URL des métadonnées SP de la méthode d’authentification SAML 2.0, dans ce cas
https://foxids.com/test-corp/context-handler-test/(g9ey6lfw)/saml/spmetadata. - Remplissez le reste, acceptez les conditions et cliquez sur Save (DK: Gem)
3 - Ajouter la transformation de revendication privilege dans FoxIDs Control Client
FoxIDs peut transformer la revendication DK privilege XML en revendication JSON. Il est recommandé d’ajouter la transformation afin d’obtenir des revendications et des tokens plus petits. En outre, cela rend les tokens lisibles.
- Sélectionnez l’onglet Claim transform
- Cliquez sur Add claim transform puis DK XML privilege to JSON
- Cliquez sur Update

FoxIDs convertit en interne les revendications SAML 2.0 en revendications JWT. Le mappage entre revendications SAML 2.0 et JWT est créé automatiquement par défaut. Vous pouvez trouver et modifier le mappage dans l’onglet Settings.
Vous avez terminé. La méthode d’authentification SAML 2.0 peut maintenant être utilisée comme méthode d’authentification pour les enregistrements d’applications dans l’environnement.
Un enregistrement d’application n’émettra que les revendications ajoutées.
N’oubliez donc pas d’ajouter les revendications JWT aux enregistrements d’applications OpenID Connect ou d’utiliser la notation*.
Configurer un Identity Provider de test pour Context Handler
Ce guide décrit comment configurer FoxIDs comme Identity Provider de test pour Context Handler. Context Handler est ajouté comme Relying Party SAML 2.0.
Vous devez utiliser un environnement séparé pour disposer d’un emplacement pour les utilisateurs de test et configurer le certificat OCES3 avant de suivre ce guide.
1 - Commencez par créer un enregistrement d’application SAML 2.0 dans FoxIDs Control Client
Sélectionnez l’onglet Applications
Cliquez sur New application
Sélectionnez Show advanced
Sélectionnez Web Application (SAML 2.0)
Ajoutez le Name par ex.
Context Handler IdPTéléchargez les métadonnées RP Context Handler où vous trouverez les endpoints et le certificat à approuver.
Métadonnées test :https://n2adgangsstyring.eksterntest-stoettesystemerne.dk/runtime/saml2auth/metadata.idp
Le certificat est encodé en base64 et peut être converti en fichier de certificat.ceravec l’outil de certificat FoxIDs.Ajoutez l’Application issuer
https://saml.n2adgangsstyring.eksterntest-stoettesystemerne.dk/runtimeet les métadonnéesAjoutez l’Assertion consumer service (ACS) URL
https://n2adgangsstyring.eksterntest-stoettesystemerne.dk/runtime/saml2auth/consume.idpdepuis les métadonnées
Cliquez sur Register
Lisez l’Metadata URL et conservez-la pour plus tard
Cliquez sur Close
La configuration détaillée s’ouvre, sélectionnez Show advanced en haut à droite de cette section de configuration
Activez Absolute ACS URL
Définissez Encrypt authn response sur Yes
Ajoutez le certificat de chiffrement depuis les métadonnées dans Encryption certificate
Définissez le NameID format sur
urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectNameAjoutez le Logged out URL
https://n2adgangsstyring.eksterntest-stoettesystemerne.dk/runtime/saml2auth/signoffresponse.idpdepuis les métadonnéesAjoutez le Single logout out URL
https://n2adgangsstyring.eksterntest-stoettesystemerne.dk/runtime/saml2auth/signoffrequest.idpdepuis les métadonnéesDéfinissez Logout request binding et Logout response binding sur redirect
Définissez les revendications OIOSAML3 qui doivent être émises vers Context Handler dans Issue claims
Les revendications suivantes sont le plus souvent utilisées :
https://data.gov.dk/model/core/specVersionhttps://data.gov.dk/model/core/kombitSpecVerhttps://data.gov.dk/concept/core/nsis/loahttps://data.gov.dk/model/core/eid/professional/cvrhttps://data.gov.dk/model/core/eid/privilegesIntermediate
- Ajoutez le certificat de signature depuis les métadonnées dans Signature validation certificate
- Optionnellement, définissez Certificate validation mode sur Chain trust si le certificat racine OCES3 est approuvé sur votre plateforme Définissez Certificate revocation mode sur Online
- Définissez Authn response sign type sur Sign assertion
- Configurez un Custom IdP issuer, l’émetteur peut éventuellement commencer par
https://saml.. L’émetteur dans cet exemplehttps://saml.foxids.com/test-corp/context-handler-test-idp/ - Sélectionnez Yes dans Add logout response location URL in metadata
- Sélectionnez Yes dans Include the encryption certificate in metadata
- Dans Contact persons in metadata, cliquez sur Add contact person puis Administrative pour ajouter une personne de contact administrative

- Cliquez sur Update
- Remontez en haut de la section d’application SAML 2.0
- Trouvez les métadonnées IdP de test dans SAML 2.0 Metadata, dans ce cas
https://foxids.com/test-corp/context-handler-idp-test/ch-idp(*)/saml/idpmetadata
Les métadonnées IdP de test sont utilisées pour configurer le fournisseur d’identité Context Handler.
2 - Ensuite, allez sur le portail d’administration Context Handler en Test
- Sélectionnez IT-systems (DK: IT-systemer)
- Cliquez sur Add IT-system (DK: Tilslut it-system)
- Remplissez les champs et sélectionnez Identity Provider
- Allez dans l’onglet Identity Provider
- Sélectionnez Context Handler with NSIS et retirez la sélection de Context Handler (without NSIS)
- Sélectionnez OIOSAML3 comme profil OIOSAML et niveau NSIS
- Ajoutez l’URL des métadonnées IdP de test, dans ce cas
https://foxids.com/test-corp/context-handler-idp-test/ch-idp(*)/saml/idpmetadata. - Remplissez le reste, acceptez les conditions et cliquez sur Save (DK: Gem)
Vous devez être enregistré en tant que votre propre autorité de test (DK: egen test myndighed) dans l’environnement de test pour ajouter un accord de fédération. Un accord de fédération (DK: føderationsaftaler) est requis pour activer le fournisseur d’identité dans Context Handler.
3 - Ajouter la transformation de revendications dans FoxIDs Control Client
Créez les revendications qui doivent être émises vers Context Handler dans les transformations de revendications.
- Revenez à l’application SAML 2.0
Context Handler IdP - Sélectionnez l’onglet Claim transforms
- Ajoutez une revendication Constant
https://data.gov.dk/model/core/specVersionavec la valeurOIO-SAML-3.0 - Ajoutez une revendication Constant
https://data.gov.dk/model/core/kombitSpecVeravec la valeur2.0 - Ajoutez une revendication Constant de niveau d’assurance (loa)
https://data.gov.dk/concept/core/nsis/loaavec par exemple la valeurSubstantialou lisez la revendication via le pipeline de revendications

- Ajoutez une revendication Concatenated pour remplacer la revendication NameID
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifierqui est une version concaténée du numéro CVR, du nom d’affichage et de l’identifiant utilisateur unique - Sélectionnez Action Replace claim
- Concaténez les revendications :
https://data.gov.dk/model/core/eid/professional/cvrhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/givennamehttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/surnamehttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
- Définissez Concatenate format string sur
C=DK,O={0},CN={1} {2},Serial={3}
- Cliquez sur Update
4 - Ajouter les mappages de revendications SAML 2.0 vers JWT dans FoxIDs Control Client
FoxIDs convertit en interne les revendications SAML 2.0 en revendications JWT. Context Handler utilise un ensemble de revendications SAML 2.0 défini par OIOSAML3 où les mappages JWT correspondants doivent être ajoutés dans l’environnement.
- Allez dans l’onglet Settings et Claim mappings
- Cliquez sur Add claim mapping pour toutes les revendications configurées à l’étape 1.20, vous pouvez créer vos propres noms de revendications JWT courts si aucun nom standard n’existe (ou modifier les mappages de revendications s’ils existent déjà)
- Cliquez sur Update
5 - Ajouter des utilisateurs de test dans FoxIDs Control Client
Vous pouvez ajouter des utilisateurs de test avec des revendications de test dans l’onglet Users et le sous-onglet Internal Users.
Les revendications de test sur les utilisateurs de test sont basées sur JWT et mappées vers des revendications SAML 2.0.
Chaque utilisateur de test doit avoir une revendication CVR cvr, une revendication de prénom given_name, une revendication de nom de famille family_name et éventuellement une revendication privilege avec une valeur de chaîne XML DK privilege encodée en base64.

Si l’utilisateur doit avoir le rôle Job function (DK: Jobfunktionsrolle) http://foxids.com/roles/jobrole/test-corp-admin_access/1, le XML DK privilege serait (avec numéro CVR de test : 11111111) :
<?xml version="1.0" encoding="UTF-8"?>
<bpp:PrivilegeList xmlns:bpp="http://digst.dk/oiosaml/basic_privilege_profile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<PrivilegeGroup Scope="urn:dk:gov:saml:cvrNumberIdentifier:11111111">
<Privilege>http://foxids.com/roles/jobrole/test-corp-admin_access/1</Privilege>
</PrivilegeGroup>
</bpp:PrivilegeList>