Ich durfte heute bei einem Kunde am Citrix ADC das nfactor Feature zur MFA Absicherung des Citrix Gateways konfigurieren. Als 1. Faktor sollte das normal AD Kennwort abgefragt werden, Gruppenabhängig dann als 2. Faktor einen RADIUS Server.
Die Implementierung des nfactor flows ging relativ schnell und die Authentifizierungen waren in den ersten Versuchen auch erfolgreich. Nach kurzer Zeit meldeten sich einige User, dass sie nach der Eingabe des 2. Faktors eine Fehlermeldung erhalten, dass die Zugangsdaten nicht korrekt sind.
In der Analyse stellte sich heraus, dass die Authentifizierungen erfolgreich sind, wenn die Benutzer ihren Usernamen im Format <username> eingeben. Wird der Benutzername aber im Format <Domäne>\<Username> eingegeben, schlägt die Authentifizierung fehl. Im aaa.debug Logfile war auch ersichtlich, dass der Benutzername ebenfalls im Format <Domäne>\<Username> an den RADIUS Server gesendet wird. Am RADIUS waren die User allerdings ohne den Domänenpart angelegt. Hierdurch gab der RADIUS Server “User nicht gefunden ” zurück.
Um ein solches Problem zu umgehen gibt es die Möglichkeit per Rewrite Policy die RADIUS Benutzernamen umzuschreiben.
- RADIUS Loadbalancer auf ADC erstellen
- Rewrite Action erstellen
add rewrite action rwActRadiusDomainDel replace radius.req.user_name q/RADIUS.NEW_AVP(1,RADIUS.REQ.USER_NAME.VALUE.AFTER_STR(" \\"))/
- Rewrite Policy erstellen
add rewrite policy RadiusRemoveDomainPol radius.req.user_name.contains("\") rwActRadiusDomainDel
- Rewrite Policy an den RADIUS Loadbalancer binden
Die Rewrite Policy greift nur, wenn der Usernamen ein “\” beinhaltet. Die Rewrite Action kümmert sich dann darum, dass dass nur der Teil des Usernamens nach dem “\” gesendet wird.
ACHTUNG, sollte der RADIUS Server nur signierte Nachrichten annehmen, wird es mit dieser Lösung nicht funktionieren.
Man kann das auch hier in den Citrix Docs nachlesen.