Authentification mixte (Formulaire / Windows / SAML)
L’authentification mixte windows ET formulaire n'est pas recommandé. En effet nous préconisons de se tourner vers une solution SAML ET formulaire, et laisser l’IDP SAML faire l’authentification windows.
La page de login est modifiée à partir de la v21.16 et propose une connexion par formulaire et/ou une connexion par SSO (SAML). Ceci est contrôlable en combinant plusieurs paramètres:
<authentication mode="?"> :
- Le mode d’authentification géré nativement pas ASP.Net qui s’édite dans le web.config
Authentication.SAML.Enabled :
- Un appSettings booléen devenu ternaire avec ce ticket.
MixedAuthentication :
- Un module Http préexistant qui permet normalement de faire cohabiter authentification windows et authentification par formulaire
Authentication.SAML.AllowLogout :
- Un module Http préexistant qui permet normalement de faire cohabiter authentification windows et authentification par formulaire
Vous trouverez dans le tableau ci-dessous un récapitulatif des combinaisons possibles à partir de la version v21.16 : La valeur de clé "Mixed" est arrivée en version v21.16.
| authentication mode="?" | Authentication. SAML. Enabled=? | Mixed Authenticatiton | Authentifications possibles | Logout possible | Commentaires |
|---|---|---|---|---|---|
| Forms | False | Non installé | Form | ✔️ | Ce qu’on livre par défaut. |
| Forms | True | Non installé | SAML | 💡 | Pour un client qui authentifie tous ses utilisateurs avec son IDP. |
| Forms | Mixed | Non installé | Form + SAML | ✔️ | La nouvelle authentification mixte formulaire/Idp. - Pour un client qui n’identifie qu’une partie de ses utilisateurs avec son IDP. - La déconnexion est toujours proposée car on peut toujours choisir de se reconnecter par formulaire même si on ne se déconnecte pas forcément vraiment de l’IDP SAML. |
| Windows | False | - | Windows | ❌ | Pour faire du SSO en intranet. - L’installation du module MixedAuthentication est inutile et probablement sans effet lorsque le mode pour ASP.Net est Windows. |
| Windows | True | - | Windows + SAML | ❌ +💡 | Est-ce que ça marche vraiment ? Peut-être si on va explicitement sur la page Login.apsx. Mais ce scénario a peu de sens. |
| Windows | Mixed | - | Windows + SAML | ❌ +💡 | Idem que la ligne précédente. |
| Forms | False | Installé | Windows + Form | ❌ + ✔️ | C’est comme ça que le module MixedAuthentication fonctionne. - Si l’authentification Windows échoue on affiche la page Login.aspx qui va permettre de faire l’authentification par formulaire. - Cependant initier une authentification windows sur un domaine exposé à des utilisateurs tiers n‘est pas une bonne pratique. Ce n‘est pas pour rien que IIS affiche un message d’erreur et que ce n‘est pas supporté nativement par Microsoft. |
| Forms | True | Installé | Windows + SAML | ❌ +💡 | Ça marche mais fonctionnellement ça semble peu utile. |
| Forms | Mixed | Installé | Windows + Form + SAML | ❌ + ✔️ | Ça marche mais fonctionnellement ça semble peu utile. |
**En complément d'informations : **
Une "back door" a été ajoutée à la page de login afin de forcer l’affichage de l’authentification par formulaire (`login.aspx&ForceForm=true`) .
Ceci doit permettre à un admin avanteam de se connecter même si aucun utilisateur normal n’a besoin de cette méthode d’authentificaton.
Non préconisé : Ci-dessous, vous trouverez l'ancien mode opératoire pour mettre en place l'authentification mixte Formulaire / Windows depuis la version .Net 2016 Sp1. Cela permet aux utilisateurs non présents dans l'Active Directory (AD) d'avoir accès à l'application via un identifiant et un mot de passe; les utilisateurs présents dans l'AD se connectant par SSO.
Voici la procédure de mise en place de l'authentification mixte formulaire/windows :
-
S’assurer que sur le serveur sont installés les authentifications Windows ET Formulaire
-
Dans IIS, au niveau de l’application web, activer l'authentification Windows ET Formulaire (ignorer le message d’avertissement, tout est normal)
-
Dans le web.config, s’assurer que c’est le mode Formulaire qui est activé :
<authentication mode="Forms">
<forms loginUrl="security/login.aspx" />
</authentication>
- Enfin, ajouter le module suivant dans
<system.webServer> <modules runAllManagedModulesForAllRequests="true">:
<add name="ApsMixedAuth" type="Avanteam.Modules.Web.Security.MixedAuthentication, Avanteam.Modules.Web" />