Enregistrement d'application SAML 2.0
L'enregistrement d'application SAML 2.0 de FoxIDs vous permet de connecter une application basée sur SAML 2.0.
SAML (Security Assertion Markup Language) 2.0 est une norme XML d'authentification et d'autorisation qui permet le single sign-on (SSO) sécurisé entre un identity provider (IdP) et un service provider (SP). FoxIDs prend en charge à la fois la connexion initiée par le SP et celle initiée par l'IdP.
Votre application devient une SAML 2.0 Relying Party (RP) et FoxIDs agit comme un SAML 2.0 Identity Provider (IdP).
FoxIDs prend en charge les bindings redirect et post SAML 2.0.
FoxIDs transmet également un login hint depuis l'URL de la requête SAML Authn en utilisant le paramètre de requête login_hint ou LoginHint lorsque la requête ne contient pas de NameID. Cela permet à des relying parties comme Microsoft Entra ID et Okta de préremplir l'identifiant utilisateur dans l'expérience de connexion FoxIDs.
Un enregistrement d'application expose des metadata SAML 2.0, ce qui permet à votre application de découvrir l'Identity Provider (IdP) SAML 2.0.
FoxIDs prend en charge les profils SAML 2.0 de login, logout et single logout. Le profil Artifact n'est pas pris en charge.
Les metadata SAML 2.0 générées par FoxIDs ne contiennent des informations de logout et de single logout que si le logout est configuré dans l'enregistrement d'application SAML 2.0.
FoxIDs prend en charge les certificats RSA et ECDSA comme certificats de validation de signature SAML. La validation de signature peut accepter plusieurs algorithmes autorisés, ce qui permet de faire confiance aux relying parties qui signent les SAML requests avec des certificats RSA ou ECDSA, tout en gardant l’ancien RSA-SHA-1 désactivé par défaut.
Guides pratiques :
- Connecter AD FS
- Connecter Amazon IAM Identity Center
- Connecter Google Workspace
- Connecter Microsoft Entra ID
- Connecter Context Handler test IdP (Danish identity broker)
Configuration
Voici comment configurer votre application comme une SAML 2.0 Relying Party (RP).
Endpoints de metadata
- Metadata IdP :
https://foxids.com/tenant-x/environment-y/application-saml-pr1(*)/saml/idpmetadata(remplaceztenant-x,environment-yetapplication-saml-pr1par vos valeurs). - Endpoint unique alternatif : l'endpoint Authn retourne aussi les metadata IdP lorsqu'il est appelé en
GETet sansSAMLRequest. Cela permet aux partenaires qui exigent une seule URL pour le téléchargement des metadata et les requêtes Authn d'utiliser la même adresse, par exemplehttps://foxids.com/tenant-x/environment-y/application-saml-pr1(*)/saml/authn. Lorsque ce même endpoint reçoit une SAML AuthnRequest via redirect ou post binding, il exécute le flux de connexion normal.
Un enregistrement d'application peut prendre en charge la connexion via plusieurs méthodes d'authentification en ajoutant le nom de la méthode d'authentification à l'URL.
Par exemple, https://foxids.com/tenant-x/environment-y/application-saml-pr1(login)/saml/idpmetadata ou /saml/authn cible la méthode de connexion login. Vous pouvez également utiliser la notation par défaut * pour activer la connexion avec toutes les méthodes d'authentification.
La capture d'écran ci-dessous montre la configuration d'un enregistrement d'application SAML 2.0 FoxIDs dans le FoxIDs Control Client. Ici, la configuration est créée à partir des metadata de l'application. Les claims émis sont limités à l'ensemble configuré de claims, et vous pouvez utiliser la notation * pour émettre tous les claims.
D'autres options de configuration deviennent disponibles lorsque vous cliquez sur Show advanced.

Vous pouvez modifier la claim collection SAML 2.0 et implémenter des claim tasks avec claim transforms et claim tasks. Si vous créez un nouveau claim, ajoutez le claim ou
*à la listeIssue claimspour l'émettre à votre application.
Sécurité et interopérabilité
Les paramètres de sécurité SAML avancés sont disponibles en cliquant sur Show advanced dans l’enregistrement d’application SAML 2.0.
- Signature algorithm contrôle l’algorithme utilisé par FoxIDs pour signer les SAML responses ou assertions. RSA-SHA-256 est la valeur par défaut.
- Signature validation algorithms est une allowlist pour les SAML requests et messages de logout entrants signés par la relying party. L’allowlist par défaut inclut les algorithmes RSA-SHA-256/384/512 et ECDSA-SHA-256/384/512 pris en charge et exclut RSA-SHA-1.
- Les certificats de validation de signature SAML prennent en charge les certificats RSA et ECDSA, de sorte qu’une relying party peut utiliser les deux types de certificats pour signer les SAML requests et les messages de logout.
- Encrypt authn response chiffre l’assertion dans la SAML authentication response. Lorsque cette option est activée, le relying party encryption certificate doit être indiqué et, si l’interopérabilité l’exige, Encryption algorithm et Key encryption algorithm peuvent être sélectionnés.
Les algorithmes data encryption pris en charge sont AES-128-CBC, AES-192-CBC, AES-256-CBC, AES-128-GCM, AES-192-GCM et AES-256-GCM. AES-256-CBC est la valeur par défaut.
Les algorithmes key encryption pris en charge sont RSA 1.5, RSA-OAEP et XML Encryption 1.1 RSA-OAEP. RSA-OAEP est la valeur par défaut. N’utilisez RSA 1.5 que lorsqu’une ancienne relying party l’exige.
Exiger l'authentification multi-facteur (MFA)
La SAML 2.0 Relying Party (RP) peut exiger la MFA en incluant urn:foxids:mfa dans RequestedAuthnContext.AuthnContextClassRef. Vous pouvez le combiner avec des valeurs plus spécifiques comme urn:foxids:link. Voir demander la MFA depuis les applications.
Vous trouverez un exemple de code dans AspNetCoreSamlSample et dans le fichier SamlController.cs. La propriété AuthnContextClassRef peut être définie dans la méthode Login de SamlController.cs :
public IActionResult Login(string returnUrl = null)
{
var binding = new Saml2RedirectBinding();
binding.SetRelayStateQuery(new Dictionary<string, string>
{
{ relayStateReturnUrl, returnUrl ?? Url.Content("~/") }
});
var saml2AuthnRequest = new Saml2AuthnRequest(saml2Config)
{
// To require MFA
RequestedAuthnContext = new RequestedAuthnContext
{
Comparison = AuthnContextComparisonTypes.Exact,
AuthnContextClassRef = new string[] { "urn:foxids:mfa" },
}
};
return binding.Bind(saml2AuthnRequest).ToActionResult();
}