Integration CAS Client + error conection refused
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:
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:
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:
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:
this.authenticationRedirectStrategy.redirect(request, response, urlToRedirectTo);
Le deuxième appel lors de la Validation fait appel à
Code:
getResponseFromServer(final URL constructedUrl, final HostnameVerifier hostnameVerifier, final String encoding)
Dans lequel il y a
Code:
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.