Bonjour j'ai une application JAVA/Flex qui tourne sur un server JBoss.

Je dois mettre un place une authentification SSO via l'utilisation d'un CAS Client.

Le server CAS ne dépend pas de moi, j'ai les infos pour y accéder.


Dans mon web.xml j'ai implémenté le CAS Client de la manière suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
<filter>
        <filter-name>CAS Authentication Filter</filter-name>
        <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
        <init-param>
            <param-name>casServerLoginUrl</param-name>
            <param-value>https://serverCAS/login</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>https://localhost:8181</param-value>
        </init-param>
        <init-param>
            <param-name>service</param-name>
            <param-value>https://localhost:8181/web/MyApp.html</param-value>
        </init-param>
    </filter>
 
    <filter>
   		<filter-name>CAS Validation Filter</filter-name>
    	<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
	  	<init-param>
	    	<param-name>casServerUrlPrefix</param-name>
	    	<param-value>https://serverCAS</param-value>
		</init-param>
		<init-param>
		    <param-name>serverName</param-name>
		    <param-value>https://localhost:8181</param-value>
		</init-param>
		<init-param>
	        <param-name>redirectAfterValidation</param-name>
	        <param-value>true</param-value>
	    </init-param>
	</filter>	     
 
    <filter>
		<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
		<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
	</filter>	
 
    <filter>
		<filter-name>CAS Assertion Thread Local Filter</filter-name>
		<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
	</filter>
 
    <filter-mapping>
        <filter-name>CAS Authentication Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
	<filter-mapping>
        <filter-name>CAS Validation Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping> 
    <filter-mapping>
		<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>CAS Assertion Thread Local Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
dans le pom.xml j'ai préalablement déclaré la dépendence:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
		<dependency>
		    <groupId>org.jasig.cas.client</groupId>
		    <artifactId>cas-client-core</artifactId>
		    <version>3.2.0</version>
		</dependency>
lors de l'Exécution du code j'appelle donc mon application via l'URL:

https://localhost:8181/web/myApp.html


1- le CAS CLient me redirige bien vers le server CAS pour m'authentifier.

2- Une fois authentifié le serverCAS me redirige vers https://localhost:8181/web/myApp.htm...et=ST-12345678

mais lors de cette étape j'ai une l'erreur suivante

[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/web].[default]] (http-localhost-127.0.0.1-8181-3) "Servlet.service()" pour la servlet default a généré une exception: java.lang.RuntimeException: java.net.ConnectException: Connection refused: connect
at org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:341) [cas-client-core-3.2.0.jar:3.2.0]
at org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:305) [cas-client-core-3.2.0.jar:3.2.0]
at org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:50) [cas-client-core-3.2.0.jar:3.2.0]
at org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:207) [cas-client-core-3.2.0.jar:3.2.0]
at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:165) [cas-client-core-3.2.0.jar:3.2.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:116) [cas-client-core-3.2.0.jar:3.2.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_80-ea]
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method) [rt.jar:1.7.0_80-ea]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) [rt.jar:1.7.0_80-ea]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) [rt.jar:1.7.0_80-ea]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) [rt.jar:1.7.0_80-ea]
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) [rt.jar:1.7.0_80-ea]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) [rt.jar:1.7.0_80-ea]
at java.net.Socket.connect(Socket.java:579) [rt.jar:1.7.0_80-ea]
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618) [jsse.jar:1.7.0_80-ea]
at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:160) [jsse.jar:1.7.0_80-ea]
at sun.net.NetworkClient.doConnect(NetworkClient.java:180) [rt.jar:1.7.0_80-ea]
at sun.net.http://www.http.HttpClient.openServe...ient.java:432) [rt.jar:1.7.0_80-ea]
at sun.net.http://www.http.HttpClient.openServe...ient.java:527) [rt.jar:1.7.0_80-ea]
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:275) [rt.jar:1.7.0_80-ea]
at sun.net.http://www.protocol.https.HttpsClien...ient.java:371) [rt.jar:1.7.0_80-ea]
at sun.net.http://www.protocol.https.AbstractDe...tion.java:191) [rt.jar:1.7.0_80-ea]
at sun.net.http://www.protocol.http.HttpURLConn...tion.java:932) [rt.jar:1.7.0_80-ea]
at sun.net.http://www.protocol.https.AbstractDe...tion.java:177) [rt.jar:1.7.0_80-ea]
at sun.net.http://www.protocol.http.HttpURLConn...ion.java:1300) [rt.jar:1.7.0_80-ea]
at sun.net.http://www.protocol.https.HttpsURLCo...Impl.java:254) [rt.jar:1.7.0_80-ea]
at org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:326) [cas-client-core-3.2.0.jar:3.2.0]
... 21 more


Plus en amont dans les logs j'ai les lignes suivantes

DEBUG AuthenticationFilter.doFilter(122) - no ticket and no assertion found

DEBUG AuthenticationFilter.doFilter(131) - Constructed service url: https://127.0.0.1:8181/web/myApphtml

DEBUG AuthenticationFilter.doFilter(137) - redirecting to "https://serverCAS/login?service=https:%3A%2F%2Flocalhost%3A8181%2Fweb%2FmyAppp.html"

DEBUG AbstractTicketValidationFilter.doFilter(161) - Attempting to validate ticket: ST-14896560980689-ANLV0Ld01WxSNMLuAVqB6ndjgFkjbrn1fz9Q3Izv

DEBUG CommonUtils.constructServiceUrl(247) - serviceUrl generated: https://localhost:8181/web/myApp.html

DEBUG AbstractUrlBasedTicketValidator.constructValidationUrl(116) - Placing URL parameters in map.

DEBUG AbstractUrlBasedTicketValidator.constructValidationUrl(124) - Calling template URL attribute map.

DEBUG AbstractUrlBasedTicketValidator.constructValidationUrl(127) - Loading custom parameters from configuration.

DEBUG AbstractUrlBasedTicketValidator.validate(202) - Constructing validation url: https://serverCAS/serviceValidate?ti...b%2FmyApp.html

DEBUG AbstractUrlBasedTicketValidator.validate(206) - Retrieving response from server.

DEBUG AbstractTicketValidationFilter.doFilter(161) - Attempting to validate ticket: ST-12345678

DEBUG CommonUtils.constructServiceUrl(247) - serviceUrl generated: https://localhost:8181/webmyApp.html

DEBUG AbstractUrlBasedTicketValidator.constructValidationUrl(116) - Placing URL parameters in map.

DEBUG AbstractUrlBasedTicketValidator.constructValidationUrl(124) - Calling template URL attribute map.

DEBUG AbstractUrlBasedTicketValidator.constructValidationUrl(127) - Loading custom parameters from configuration.

DEBUG AbstractUrlBasedTicketValidator.validate(202) - Constructing validation url: https://serverCAS/serviceValidate?ti...eb%2myApp.html

DEBUG AbstractUrlBasedTicketValidator.validate(206) - Retrieving response from server.

ERROR CommonUtils.getResponseFromServer(340) - Connection refused: connect


Je n'arrive pas à voir d'où vient mon erreur et comment la corriger.

Mes observations:

- Même problème avec localhost ou 127.0.0.1

- Dnas le standalone.xml du server JBoss j'ai paramétré mes infos prox --> même problème

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
    <system-properties>
        <property name="http.proxyHost" value="myProxy"/>
        <property name="http.proxyPort" value="9090"/>
        <property name="http.proxyUser" value="login"/>
        <property name="http.proxyPassword" value="password"/>
    </system-properties>
- Si j'en directement l'url https://serverCAS/serviceValidate?ti...eb%2myApp.html dans mon navigateur cela marche, j'ai une réponse, la connection n'est pas refusé

- En regardant la différence entre les deux appels au server CAS, le premier fonctionne pour l'authentification et passe pas une méthode de redirection:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
this.authenticationRedirectStrategy.redirect(request, response, urlToRedirectTo);
Le deuxième appel lors de la Validation fait appel à

Code : Sélectionner tout - Visualiser dans une fenêtre à part
getResponseFromServer(final URL constructedUrl, final HostnameVerifier hostnameVerifier, final String encoding)
Dans lequel il y a

Code : Sélectionner tout - Visualiser dans une fenêtre à part
constructedUrl.openConnection()
j'ai l'impression que c'est cet appel qui coince et peut-être une récupération de proxy....

http://grepcode.com/file/repo1.maven...lang.String%29


http://grepcode.com/file/repository....nnection%28%29


Quelqu'un a-t-il déjà rencontré ce problème ou aurait une idée? j'ai parcouru pas mal de docs mais je n'arrive pas à saisir d'où vient le problème et qu'est ce que je dois faire.

Cordialement,
Christophe.