3 Replies Latest reply on Jul 3, 2014 10:22 AM by Rodrigo Parede

    Dúvidas SSO ClusteredSingleSignOn

    Rodrigo Parede Newbie

      Olá Pessoal queria tirar algumas dúvidas sobre autenticação compartilhada no jboss 7.

       

      Achei essa documentação do EAP (https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_Application_Platform/6/html/Development_Guide/Use_Si…), mas não funciona.

       

      Quando tento configurar o jboss-web.xml com o parametro:

       

      <class-name>org.jboss.web.tomcat.service.sso.ClusteredSingleSignOn</class-name>

       

      ocorre o erro ClassNotFoundException:

      [Server:server-one] Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS018096: Error instantiating container component: org.jboss.web.tomcat.service.sso.ClusteredSingleSignOn

      [Server:server-one] at org.jboss.as.web.deployment.WarDeploymentProcessor.getInstance(WarDeploymentProcessor.java:386)

      [Server:server-one] at org.jboss.as.web.deployment.WarDeploymentProcessor.processDeployment(WarDeploymentProcessor.java:210)

      [Server:server-one] at org.jboss.as.web.deployment.WarDeploymentProcessor.deploy(WarDeploymentProcessor.java:114)

      [Server:server-one] at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]

      [Server:server-one] ... 5 more

      [Server:server-one] Caused by: java.lang.ClassNotFoundException: org.jboss.web.tomcat.service.sso.ClusteredSingleSignOn from [Module "deployment.test.war:main" from Service Module Loader]

      [Server:server-one] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) [jboss-modules.jar:1.1.1.GA]

      [Server:server-one] at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.1.1.GA]

      [Server:server-one] at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.1.1.GA]

      [Server:server-one] at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.1.1.GA]

      [Server:server-one] at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.1.1.GA]

      [Server:server-one] at org.jboss.as.web.deployment.WarDeploymentProcessor.getInstance(WarDeploymentProcessor.java:378)

      [Server:server-one] ... 8 more

       

      Na comunidade achei esse artigo (picketlink + clusteredsinglesignon), que me esclareceu o erro, porem não compartilha para outro servidores do cluster apenas entre os .war do mesmo nó.


      Alguém sabe o que devo fazer para compartilhar para todos os servidores do meu Cluster?

        • 1. Re: Dúvidas SSO ClusteredSingleSignOn
          Adriano Schmidt Master

          Olá Rodrigo!

           

          Acho que já passei pelo mesmo que você..


          Eu montei um ambiente com vários JBoss AS 7 em cluster.. a replicação de sessão estava funcionando perfeitamente, porém, o user principal (usuário logado) não estava replicando para os outros nós do cluster...

           

          Achei na documentação que para isso funcionar precisavam ser feitos mais alguns ajustes, porém, seguindo a documentação não funcionou.. mas consegui resolver mexendo em mais algumas coisas.. dá uma olhada nesse post que fiz explicando tudo:

           

          http://localhost8080.blogspot.com.br/2013/07/jboss-as-7-cluster-sso.html

           

          Abraço!

          Adriano Schmidt

          www.localhost8080.com.br

          • 2. Re: Dúvidas SSO ClusteredSingleSignOn
            Rodrigo Parede Newbie

            Bom dia Adriano,

             

            Eu fiz esse ajuste, eu tenho mais de uma aplicação em cada nó, em um mesmo nó replica, por exemplo localhost:8080/app e localhost:8080/app02 mas quando acesso localhost:8180/app ou localhost:8180/app02 não funciona.

             

            Será que tenho que adaptar algo na aplicação?

             

            Estou pesquisando bastante, mas não consigo achar respostas

             

            Vou postar como ficou o xml:

             

            Security domain:

            <security-domain name="sso" cache-type="default">

                                    <authentication>

                                        <login-module code="br.com.auth.CustomLoginModule" flag="sufficient">

                                            <module-option name="dsJndiName" value="java:jboss/datasources/ds"/>

                                            <module-option name="principalsQuery" value="SELECT senha password FROM usuario WHERE status='A' and email=?"/>

                                            <module-option name="rolesQuery" value="SELECT 'autorizado', 'Roles' FROM usuario u WHERE u.email=?"/>

                                            <module-option name="hashAlgorithm" value="MD5"/>

                                            <module-option name="hashEncoding" value="base64"/>

                                        </login-module>                           

                                    </authentication>

            </security-domain>

             

            Virtual server:

                          

            <virtual-server name="default-host" enable-welcome-root="true">

                 <alias name="localhost"/>

                 <alias name="example.com"/>

                 <sso cache-container="web" cache-name="sso" domain="localhost" reauthenticate="false"/>

            </virtual-server>

             

            Somente isso que precisa ser alterado?

             

            Abs,

            • 3. Re: Dúvidas SSO ClusteredSingleSignOn
              Rodrigo Parede Newbie

              Adriano,

               

              Acho que achei o problema de não manter autenticado nos outros servidores do cluster, porem eu não sei exatamente como corrigir.

               

              Toda vez que acesso outro servidor (faço uma requisição) http://localhost:8080/app ou http://localhost:8180/app minha sessionID é alterada e imagino que isso força uma nova autenticação.

               

              Minha dúvida é se é possível compartilhar a sessão entre os servidores do cluster (imagino que sim) e se sim, é muito custoso para o ambiente?

               

              Abs