|
From: alexis t. <ale...@gm...> - 2014-10-30 20:01:09
|
Pour la prise en compte du paramètre, c'est du standard spring
security. Il faudrait vérifier que dans la configuration spring il n'y
ai pas always-use-default-target="true".
Pour le redirection, esigate le gère dans un cas normal. Mais dans ce
cas précis, c'est un bug qui empêche la réecriture d'url et c'est lié
à l'intégration esigate avec spring-security.
Sinon, vous pouvez patcher esigate avec ceci. C'est pas très propre,
mais ca devrait fonctionner :
--- a/esigate-core/src/main/java/org/esigate/util/UriUtils.java
+++ b/esigate-core/src/main/java/org/esigate/util/UriUtils.java
@@ -98,6 +98,11 @@ public final class UriUtils {
* @return The translated URL
*/
public static String translateUrl(String sourceUrl, String
sourceContext, String targetContext) {
+
+ if (sourceContext.contains("j_spring_cas_security_check")) {
+ sourceContext = sourceContext.substring(0,
sourceContext.indexOf("j_spring_cas_security_check"));
+ }
+
// Find what has been replaced at the beginning of sourceContext to
// transform it to targetContext
String commonSuffix =
diff --git a/esigate-core/src/test/java/org/esigate/util/UriUtilsTest.java
b/esigate-core/src/test/java/org/esigate/util/UriUtilsTest.java
index 0b30e75..9cc5277 100755
--- a/esigate-core/src/test/java/org/esigate/util/UriUtilsTest.java
+++ b/esigate-core/src/test/java/org/esigate/util/UriUtilsTest.java
@@ -86,6 +86,18 @@ public class UriUtilsTest extends TestCase {
assertEquals(expected, UriUtils.translateUrl(sourceUrl,
sourceExample, targetExample));
}
+ public void testCAS() {
+ String sourceUrl = "http://vpc-eadmin-appli2:8081/engagements/";
+ String sourceExample =
+
"http://vpc-eadmin-appli2:8081/engagements/j_spring_cas_security_check?ticket=ST-461-rj0Fv4oDSeZHttw05kDq-vpc-eadmin-appli&spring-security-redirect=http://vpc-eadmin-appli2:8081/engagement
+ String targetExample =
+
"http://vpc-eadmin-appli:80/esigate/private/engagements/;jsessionid=D5ACA819E6ABB85F8C21070CD208C626";
+
+ String expected =
+
"http://vpc-eadmin-appli:80/esigate/private/engagements/;jsessionid=D5ACA819E6ABB85F8C21070CD208C626";
+ assertEquals(expected, UriUtils.translateUrl(sourceUrl,
sourceExample, targetExample));
+ }
+
Le 30 octobre 2014 19:34, William Dupuis <wil...@gm...> a écrit :
> En effet, le paramètre "spring-security-redirect" ne semble pas être pris en
> compte par défaut dans Spring Security.
> Il faut donc faire un petit développement côté application distante pour
> gérer ce paramètre ?
>
> Par contre, je ne comprends pas pourquoi ESIGate suite cette redirection et
> pourquoi c'est à l'application distante de rediriger vers l'URL ESIGate.
> Je pensais que c'était ESIGate qui gérait cela, une fois qu'il recevait la
> réponse de l'application distante, il redirigeait vers l'URL d'origine.
>
>
> Le 30 octobre 2014 13:42, alexis thaveau <ale...@gm...> a écrit
> :
>
>> Les logs indiquent pourtant que le paramètre spring-security-redirect
>> est correcte maintenant
>> "http://vpc-eadmin-appli:80/esigate/private/engagements/". Mais il ne
>> semble pas pris en compte par votre application qui répond avec le
>> header "Location:http://vpc-eadmin-appli2:8081/engagements/" :
>>
>> 13:10:55 INFO esigate.extension.FragmentLogging: - engagements
>> http://vpc-eadmin-appli2:8081 - GET
>>
>> http://vpc-eadmin-appli2:8081/engagements/j_spring_cas_security_check?ticket=ST-963-fCj3ebpNrNj9FAg0LBQQ-vpc-eadmin-appli&spring-security-redirect=http://vpc-eadmin-appli:80/esigate/private/engagements/;jsessionid=67D2FBF37635292024D30C79D4BDD3CE
>> HTTP/1.1 {accept:
>>
>> text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8,user-agent:
>> Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like
>> Gecko) Chrome/40.0.2203.3 Safari/537.36,accept-encoding: gzip,
>> deflate, sdch,accept-language:
>> fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4,X-Forwarded-For: 10.84.15.30,
>> 10.83.199.94,x-forwarded-host: vpc-eadmin-appli,x-forwarded-server:
>> vpc-eadmin-appli,X-Forwarded-Proto: http} -> HTTP/1.1 302 Déplacé
>> Temporairement (306 ms) CACHE_MISS {Server:
>> Apache-Coyote/1.1,Location:
>> http://vpc-eadmin-appli2:8081/engagements/,Via: 1.1 localhost
>> (Apache-HttpClient/4.3.5 (cache))}
>>
>>
>> Il faudrait debugger l'application distante car elle ne semble pas
>> prendre en compte le paramètre spring-security-redirect.
>>
>>
>>
>> Le 30 octobre 2014 13:13, William Dupuis <wil...@gm...> a
>> écrit :
>> > Pas d'amélioration.
>> > Je suis toujours redirigé vers l'application.
>> >
>> > Le 30 octobre 2014 11:38, alexis thaveau <ale...@gm...> a
>> > écrit
>> > :
>> >
>> >> Bonjour,
>> >> Tu passes 2 fois dedans à cause de l'authentification CAS et de la
>> >> redirection. Je t’envois une correction, peux tu tester ?
>> >>
>> >> Le 29 octobre 2014 18:33, William Dupuis <wil...@gm...> a
>> >> écrit :
>> >> > La modification du cookie était un test, j'ai remis la valeur par
>> >> > défaut.
>> >> >
>> >> > Je passe bien dans la ligne 158.
>> >> > J'y passe même 2 fois.
>> >> > Voici la valeur des 3 paramètres :
>> >> >
>> >> > value :
>> >> >
>> >> >
>> >> > https://vpc-eadmin-appli/cas/login?service=http%3A%2F%2Fvpc-eadmin-appli2%3A8081%2Fengagements%2Fj_spring_cas_security_check
>> >> > uri :
>> >> >
>> >> >
>> >> > http://vpc-eadmin-appli2:8081/engagements/;jsessionid=D5ACA819E6ABB85F8C21070CD208C626
>> >> >
>> >> >
>> >> > originalUrihttp://vpc-eadmin-appli:80/esigate/private/engagements/;jsessionid=D5ACA819E6ABB85F8C21070CD208C626
>> >> >
>> >> >
>> >> > value : http://vpc-eadmin-appli2:8081/engagements/
>> >> > uri :
>> >> >
>> >> >
>> >> > http://vpc-eadmin-appli2:8081/engagements/j_spring_cas_security_check?ticket=ST-461-rj0Fv4oDSeZHttw05kDq-vpc-eadmin-appli&spring-security-redirect=http://vpc-eadmin-appli2:8081/engagements/;jsessionid=D5ACA819E6ABB85F8C21070CD208C626
>> >> > originalUri :
>> >> >
>> >> >
>> >> > http://vpc-eadmin-appli:80/esigate/private/engagements/;jsessionid=D5ACA819E6ABB85F8C21070CD208C626
>> >> >
>> >> >
>> >> >
>> >> > Le 29 octobre 2014 18:14, alexis thaveau <ale...@gm...> a
>> >> > écrit
>> >> > :
>> >> >
>> >> >> La c'est un autre cas. Le header "Location" est réécrit plus haut :
>> >> >> ligne 158 dans la méthode public void copyHeaders(HttpRequest
>> >> >> httpRequest, HttpEntityEnclosingRequest originalRequest,
>> >> >> HttpResponse httpClientResponse, HttpResponse output)
>> >> >>
>> >> >>
>> >> >> Mais je pense que tu vas aussi avoir des sourcis avec
>> >> >> ESI_JSESSION_ID.
>> >> >> esigate gère uniquement le JSESSION_ID, et le supprime dans les URL
>> >> >> lorsqu'il est déjà posé en cookie.
>> >> >>
>> >> >>
>> >> >> Le 29 octobre 2014 17:57, William Dupuis <wil...@gm...>
>> >> >> a
>> >> >> écrit :
>> >> >> > Je ne passe jamais dans cette ligne.
>> >> >> >
>> >> >> > Dans le "if" précédent, il ne trouve pas le "Referer" dans les
>> >> >> > paramétres du
>> >> >> > header.
>> >> >> > J'ai les headers suivants : host, accept, user-agent,
>> >> >> > accept-encoding,
>> >> >> > accept-language, cookie, x-forwarded-for, x-forwarded-host,
>> >> >> > x-forwarded-server et connection.
>> >> >> >
>> >> >> > Concernant les valeurs d'originalUri et uri les voici :
>> >> >> > originalUri :
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > http://vpc-eadmin-sgac-appli:80/esigate/private/engagements/;ESI_JSESSIONID=CDBD080E065A31319874FC7E653CB29E
>> >> >> > uri :
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > http://vpc-eadmin-sgac-appli2:8081/engagements/;ESI_JSESSIONID=CDBD080E065A31319874FC7E653CB29E
>> >> >> >
>> >> >> >
>> >> >> > Le 29 octobre 2014 15:43, alexis thaveau
>> >> >> > <ale...@gm...> a
>> >> >> > écrit
>> >> >> > :
>> >> >> >
>> >> >> >> On voit bien dans les logs une réponse de l'appli avec un
>> >> >> >> Location:
>> >> >> >> http://vpc-eadmin-appli2:8081/engagements/
>> >> >> >> Esigate devrait récrire l'URL pour rester sur esigate.
>> >> >> >>
>> >> >> >> La réécriture est géré dans la classe HeaderManager.copyHeaders,
>> >> >> >> le
>> >> >> >> plus simple va être de mettre un point d'arrêt sur cette ligne :
>> >> >> >> value = UriUtils.translateUrl(value, uri, originalUri);
>> >> >> >>
>> >> >> >> Et me donner les valeurs des 3 paramètres
>> >> >> >>
>> >> >> >> Le 29 octobre 2014 14:54, William Dupuis
>> >> >> >> <wil...@gm...>
>> >> >> >> a
>> >> >> >> écrit :
>> >> >> >> > Le résultat est toujours le même.
>> >> >> >> > J'ai essayé en supprimant la directive "preserveHost=true" et
>> >> >> >> > cela
>> >> >> >> > est
>> >> >> >> > pareil.
>> >> >> >> >
>> >> >> >> > Le 29 octobre 2014 14:29, alexis thaveau
>> >> >> >> > <ale...@gm...> a
>> >> >> >> > écrit
>> >> >> >> > :
>> >> >> >> >
>> >> >> >> >> Bonjour,
>> >> >> >> >> Les logs ne donnent pas assez d'information, il faudrait
>> >> >> >> >> ajouter
>> >> >> >> >> l'extension FragmentLogging qui permet de tracer les
>> >> >> >> >> requetes/reponses HTTP.
>> >> >> >> >> Par contre, j'ai peut etre une piste qui viendrait du
>> >> >> >> >> preserveHost
>> >> >> >> >> qui
>> >> >> >> >> est à true par défaut. Il faudrait tester avec :
>> >> >> >> >> engagements.preserveHost=false
>> >> >> >> >>
>> >> >> >> >> L'application distante doit faire une redirection et esigate
>> >> >> >> >> ne
>> >> >> >> >> reconstruit par l'url correctement pour pointer vers esigate
>> >> >> >> >>
>> >> >> >> >> Le 29 octobre 2014 11:46, William Dupuis
>> >> >> >> >> <wil...@gm...>
>> >> >> >> >> a
>> >> >> >> >> écrit :
>> >> >> >> >> > Sans l'extension ServletExtension, le comportement est le
>> >> >> >> >> > même.
>> >> >> >> >> > J'ai également supprimé le provider pour "bonita".
>> >> >> >> >> > Voici les logs générés.
>> >> >> >> >> >
>> >> >> >> >> > Merci beaucoup pour le temps passer sur mon problème.
>> >> >> >> >> >
>> >> >> >> >> > Le 29 octobre 2014 11:11, alexis thaveau
>> >> >> >> >> > <ale...@gm...> a
>> >> >> >> >> > écrit
>> >> >> >> >> > :
>> >> >> >> >> >
>> >> >> >> >> >> Bonjour,
>> >> >> >> >> >>
>> >> >> >> >> >> Est-ce que vous pouvez tester sans l'extension
>> >> >> >> >> >> ServletExtension ?
>> >> >> >> >> >>
>> >> >> >> >> >> Le 29 octobre 2014 09:19, William Dupuis
>> >> >> >> >> >> <wil...@gm...>
>> >> >> >> >> >> a
>> >> >> >> >> >> écrit :
>> >> >> >> >> >> > Bonjour,
>> >> >> >> >> >> > Voici les différents éléments demandés.
>> >> >> >> >> >> >
>> >> >> >> >> >> > Pour gérer ces logs, j'ai testé de me connecter à l'URL :
>> >> >> >> >> >> > http://vpc-eadmin-appli/esigate/private/engagements/
>> >> >> >> >> >> > Après m'être authentifié dans le CAS, j'ai été redirigé
>> >> >> >> >> >> > vers
>> >> >> >> >> >> > l'URL
>> >> >> >> >> >> > :
>> >> >> >> >> >> > http://vpc-eadmin-appli2:8081/engagements/
>> >> >> >> >> >> >
>> >> >> >> >> >> > Merci pour votre aide.
>> >> >> >> >> >> > William
>> >> >> >> >> >> >
>> >> >> >> >> >> > Le 28 octobre 2014 18:24, alexis thaveau
>> >> >> >> >> >> > <ale...@gm...> a
>> >> >> >> >> >> > écrit
>> >> >> >> >> >> > :
>> >> >> >> >> >> >
>> >> >> >> >> >> >> Bonsoir,
>> >> >> >> >> >> >>
>> >> >> >> >> >> >> Est-ce que vous pouvez fournir la configuration esigate
>> >> >> >> >> >> >> (esigate.properties + web.xml) ? Pouvez vous aussi
>> >> >> >> >> >> >> fournir
>> >> >> >> >> >> >> le
>> >> >> >> >> >> >> fichier
>> >> >> >> >> >> >> de log (avec un niveau debug sur esigate ) ?
>> >> >> >> >> >> >>
>> >> >> >> >> >> >> Merci
>> >> >> >> >> >> >>
>> >> >> >> >> >> >> Le 28 octobre 2014 17:01, William Dupuis
>> >> >> >> >> >> >> <wil...@gm...>
>> >> >> >> >> >> >> a
>> >> >> >> >> >> >> écrit :
>> >> >> >> >> >> >> > Bonjour,
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Je vous contacte car j'ai un problème de redirection
>> >> >> >> >> >> >> > après
>> >> >> >> >> >> >> > une
>> >> >> >> >> >> >> > authentification ProxyCAS dans ESIGate.
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Détail de mon problème :
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > J'ai installé un serveur ESIGate 5.0 en frontal de mes
>> >> >> >> >> >> >> > applications.
>> >> >> >> >> >> >> > Ce
>> >> >> >> >> >> >> > serveur est cassifié et est utilisé comme ProxyCAS.
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Lorsque je teste le ProxyCAS sur les webapps de demo
>> >> >> >> >> >> >> > (esigate-app-casified-aggregated1 et
>> >> >> >> >> >> >> > esigate-app-casified-aggregated2),
>> >> >> >> >> >> >> > cela
>> >> >> >> >> >> >> > fonctionne bien.
>> >> >> >> >> >> >> > Mes 2 webapps sont déployées dans le même Tomcat
>> >> >> >> >> >> >> > qu'ESIGate.
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Par contre, lorsque j'essaye d'inclure des
>> >> >> >> >> >> >> > applications
>> >> >> >> >> >> >> > tierces,
>> >> >> >> >> >> >> > je
>> >> >> >> >> >> >> > me
>> >> >> >> >> >> >> > retrouve redirigé vers les applications tierces une
>> >> >> >> >> >> >> > fois
>> >> >> >> >> >> >> > connecté.
>> >> >> >> >> >> >> > Pourtant en regardant les logs, l'authentification via
>> >> >> >> >> >> >> > ProxyCAS
>> >> >> >> >> >> >> > dans
>> >> >> >> >> >> >> > mes
>> >> >> >> >> >> >> > applications tierces a bien fonctionné.
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Configuration du provider :
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > appli.remoteUrlBase=http://adresse-locale:8080/appli/
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > appli.extensions=org.esigate.servlet.ServletExtension,org.esigate.extension.Esi,org.esigate.cas.CasAuthenticationHandler
>> >> >> >> >> >> >> > appli.mappings=/private/appli/*
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Scénario :
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > J'accède à mon adresse ESIGate sécurisée :
>> >> >> >> >> >> >> > http://adresse-esigate/esigate/private/appli/
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Je suis redirigé vers mon CAS :
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > https://adresse-cas/cas/login?service=http%3A%2F%2Fadresse-esigate%2Fesigate%2Fprivate%2Fappli%2F
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Une fois authentifié dans CAS, je suis bien redirigé
>> >> >> >> >> >> >> > vers
>> >> >> >> >> >> >> > http://adresse-esigate/esigate/private/appli/, puis je
>> >> >> >> >> >> >> > suis
>> >> >> >> >> >> >> > directement
>> >> >> >> >> >> >> > redirigé avec une HTTP 302 vers mon adresse locale
>> >> >> >> >> >> >> > http://adresse-locale:8080/appli/
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Si je re-accède à mon URL ESIGate
>> >> >> >> >> >> >> > (http://adresse-esigate/esigate/private/appli), cela
>> >> >> >> >> >> >> > fonctionne
>> >> >> >> >> >> >> > bien,
>> >> >> >> >> >> >> > je
>> >> >> >> >> >> >> > suis authentifié.
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Quelqu'un a-t-il déjà rencontré ce problème ?
>> >> >> >> >> >> >> > Je n'arrive pas à déterminer si mon problème vient de
>> >> >> >> >> >> >> > ma
>> >> >> >> >> >> >> > configuration
>> >> >> >> >> >> >> > ESIGate ou de mes applications tierces.
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > Merci d'avance pour votre retour.
>> >> >> >> >> >> >> > Cordialement,
>> >> >> >> >> >> >> > William Dupuis
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > ------------------------------------------------------------------------------
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > _______________________________________________
>> >> >> >> >> >> >> > Webassembletool-users mailing list
>> >> >> >> >> >> >> > Web...@li...
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >> > https://lists.sourceforge.net/lists/listinfo/webassembletool-users
>> >> >> >> >> >> >> >
>> >> >> >> >> >> >
>> >> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >
>> >
>
>
|