# \[Livro Java EE - JAAS\] - 403 forbidden - Single Sign On

**URL:** <https://forum.casadocodigo.com.br/t/livro-java-ee-jaas-403-forbidden-single-sign-on/57>\
**Category:** Livros\
**Tags:** java-ee\
**Created:** [Dezembro 1, 2015, 2:18pm UTC](https://forum.casadocodigo.com.br/t/livro-java-ee-jaas-403-forbidden-single-sign-on/57 "2015-12-01T14:18:06Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![carloseduardoxpto](https://avatars.discourse-cdn.com/v4/letter/c/5e9695/32.png) [@carloseduardoxpto](https://forum.casadocodigo.com.br/u/carloseduardoxpto)\
**Post date:** [Dezembro 1, 2015, 2:18pm UTC](https://forum.casadocodigo.com.br/t/livro-java-ee-jaas-403-forbidden-single-sign-on/57/1 "2015-12-01T14:18:06Z")

</div>

Criei dois sistemas para utilizar no Wildfly 8.2.1 - Seguranca.war e Ecommerce.war. O sistema de Seguranca autentica no Wildfly via JAAS, conforme explicado no capítulo 12 do livro Java EE. Todos os passos citados no livro funcionam perfeitamente, e as roles são carregadas.

Contudo, no sistema Ecommerce.war, ao colocar as security-constraint no web.xml, o sistema acusa 403 - forbidden. Verifiquei que as roles não são carregadas neste sistema, mas apenas no sistema de Seguranca, que fiz a autenticação. Prova disso que, ao executar request.getUserPrincipal() no sistema Ecommerce, retorna null, enquanto que no sistema Seguranca retorna normalmente o usuario.

Eu acredito que seja necessário realizar alguma configuração no standalone-full.xml, para que o login-module criado se estenda para todos os outros sistemas da pasta deployments, mas após algumas pesquisas, não encontrei resultado.

Alguém poderia ajudar?

Obrigado

---

<div class="post-metadata">

**Author:** ![carloseduardoxpto](https://avatars.discourse-cdn.com/v4/letter/c/5e9695/32.png) [@carloseduardoxpto](https://forum.casadocodigo.com.br/u/carloseduardoxpto)\
**Post date:** [Dezembro 1, 2015, 2:26pm UTC](https://forum.casadocodigo.com.br/t/livro-java-ee-jaas-403-forbidden-single-sign-on/57/2 "2015-12-01T14:26:18Z")

</div>

Cada sistema possui o seu conjunto de roles. O sistema de Seguranca possui as roles SEG\_ADMIN e SEG\_MENU, e o sistema Ecommerce possui as roles ECO\_ADMIN, ECO\_CADASTRO e ECO\_CONSULTA. Já averiguei pelo sistema de Seguranca que, ao logar, as roles ECO\_ADMIN e SEG\_MENU são carregadas. Com isso, creio que não existe nenhum problema com falta de roles.

```
	System.out.println(request.getUserPrincipal().getName());
	System.out.println("type = " + request.getUserPrincipal().getClass());
	System.out.println(request.isUserInRole("ECO_ADMIN"));
	System.out.println(request.isUserInRole("ECO_CADASTRO"));
	System.out.println(request.isUserInRole("ECO_CONSULTA"));
	System.out.println(request.isUserInRole("SEG_ADMIN"));
	System.out.println(request.isUserInRole("SEG_MENU"));
```

---

<div class="post-metadata">

**Author:** ![alots.ssa](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/alots.ssa/32/75_2.png) [@alots.ssa](https://forum.casadocodigo.com.br/u/alots.ssa)\
**Post date:** [Dezembro 1, 2015, 2:30pm UTC](https://forum.casadocodigo.com.br/t/livro-java-ee-jaas-403-forbidden-single-sign-on/57/3 "2015-12-01T14:30:52Z")

</div>

Oi Carlos,

Você criou o arquivo jboss-web.xml na aplicação do ecommerce? Tem uma parte que eu não tenho certeza se entendi direito, então vou falar do mesmo jeito :). Você pode até aproveitar o login-module entre as duas aplicações, mas o usuário logado em uma não é automaticamente compartilhado na outra :/, você teria que fazer dois logins. Caso você precise de algo próximo ao Single Sign On, recomendo dar uma olhada no KeyCloak. Ele pode ser integrado ao Wildfly e outros servidores e já possui uma extensão para o JAAS também.

---

<div class="post-metadata">

**Author:** ![carloseduardoxpto](https://avatars.discourse-cdn.com/v4/letter/c/5e9695/32.png) [@carloseduardoxpto](https://forum.casadocodigo.com.br/u/carloseduardoxpto)\
**Post date:** [Dezembro 1, 2015, 3:53pm UTC](https://forum.casadocodigo.com.br/t/livro-java-ee-jaas-403-forbidden-single-sign-on/57/4 "2015-12-01T15:53:24Z")

</div>

Olá Alberto, muito obrigado por ter respondido. Sua resposta me ajudou muito a encontrar a solução.

Como você disse, eu realmente precisei adicionar o jboss-web.xml no sistema Ecommerce, mas também precisei adicionar uma configuração no standalone-full.xml, que é a tag single-sign-on. Dessa forma, o conteúdo lá no standalone-full.xml ficou da seguinte forma:

\< server name=“default-server”\>  
\< http-listener name=“default” socket-binding=“http”/\>  
\< host name=“default-host” alias=“localhost”\>  
\< location name="/" handler=“welcome-content”/\>  
\< filter-ref name=“server-header”/\>  
\< filter-ref name=“x-powered-by-header”/\>  
\< single-sign-on path="/" /\>  
\< /host\>  
\< /server\>

Com isso, todas as roles e o usuário logado no seguranca se estenderam ao outro sistema (e quaisquer outros que porventura eu possa adicionar futuramente), que era exatamente o que eu precisava.

Eu trabalhei com Single Sign On no JBoss 4.2.3 há alguns anos atrás, e não precisava do jboss-web.xml em todos os sistemas, mas apenas no sistema que eu tinha a tela de login. Na época bastava adicionar a configuração abaixo no server.xml.

```
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

```

De qualquer forma, vou dar uma olhada no KeyCloak. Valeu a dica.

---

<div class="post-metadata">

**Author:** ![alots.ssa](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/alots.ssa/32/75_2.png) [@alots.ssa](https://forum.casadocodigo.com.br/u/alots.ssa)\
**Post date:** [Dezembro 1, 2015, 4:13pm UTC](https://forum.casadocodigo.com.br/t/livro-java-ee-jaas-403-forbidden-single-sign-on/57/5 "2015-12-01T16:13:30Z")

</div>

Legal Carlos, legal essa propriedade! O KeyCloak vai ser mais útil se você quisesse que sistemas rodando em qualquer lugar pudessem compartilhar o usuário logado… Ele é literalmente um servidor de login :).
