willesreis commented on a change in pull request #686:
URL: https://github.com/apache/tomee/pull/686#discussion_r456208136



##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.
+O teste Arquillian é responsável por gerar os JWTs e anexá-los os requests.
+
+== Configuração no TomEE
+
+Para ativar o JWT, você precisa anotar sua classe de aplicação REST com a 
anotação `org.eclipse.microprofile.auth.LoginConfig`.
+Neste exemplo, a classe é `ApplicationConfig`.
+
+Outra coisa que precisa ser feita é configurar a `public key` para verificar a 
assinatura do JWT anexada no cabeçalho `Authorization'.
+É assinado na criação com a `private key` do issuer.
+Isso é feito para evitar o uso moderado do token enquanto ele viaja do 
chamador até o endpoint.
+Geralmente, a emissão do JWT ocorre em um módulo ou microsserviço especial 
responsável pela autenticação dos usuários.
+Neste projeto de amostra, isso acontece no `BookstoreTest`.
+
+Cada tempo de execução de suporte ao MicroProfile JWT deve poder verificar se 
a assinatura está correta e se o conteúdo assinado não é alterado ao longo do 
caminho.
+Para fazer isso, ele precisa ter acesso a uma `public key`.
+Essa `public key` pode estar no formato `PKCS#8 PEM, JWK ou JWKS`.
+Desde o MP JWT 1.1 (que é suportado pelo TomEE), a chave pode ser fornecida 
como uma string na propriedade de configuração `mp.jwt.verify.publickey` ou 
como um local ou URL de arquivo especificado em 
`mp.jwt.verify.publickey.location` na propriedade de configuração.
+
+Neste projeto de amostra, você pode ver a primeira opção.
+O arquivo `src/main/resource/META-INF/microprofile-config.properties` contém a 
seguinte entrada:
+
+[source,properties]
+----
+mp.jwt.verify.publickey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlivFI8qB4D0y2jy0CfEqFyy46R0o7S8TKpsx5xbHKoU1VWg6QkQm+ntyIv1p4kE1sPEQO73+HY8+Bzs75XwRTYL1BmR1w8J5hmjVWjc6R2BTBGAYRPFRhor3kpM6ni2SPmNNhurEAHw7TaqszP5eUF/F9+KEBWkwVta+PZ37bwqSE4sCb1soZFrVz/UT/LF4tYpuVYt3YbqToZ3pZOZ9AX2o1GCG3xwOjkc4x0W7ezbQZdC9iftPxVHR8irOijJRRjcPDtA6vPKpzLl6CyYnsIYPd99ltwxTHjr3npfv/3Lw50bAkbT4HeLFxTx4flEoZLKO/g0bAoV2uqBhkA9xnQIDAQAB
+----
+
+== trabalhando com JWT
+
+A classe `BookResource` neste projeto de amostra mostra dois casos em que você 
pode usar a especificação MP JWT: obter o valor de uma declaração JWT e o 
controle de acesso baseado em função dos endpoints REST.
+
+=== Obtenção de valores de claim
+
+O token da web JSON (JWT) anexado no cabeçalho HTTP `Authorization` é 
essencialmente um objeto JSON que contém vários atributos.

Review comment:
       ```suggestion
   O JSON Web Token (JWT) anexado no cabeçalho HTTP `Authorization` é 
essencialmente um objeto JSON que contém vários atributos.
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.
+O teste Arquillian é responsável por gerar os JWTs e anexá-los os requests.
+
+== Configuração no TomEE
+
+Para ativar o JWT, você precisa anotar sua classe de aplicação REST com a 
anotação `org.eclipse.microprofile.auth.LoginConfig`.
+Neste exemplo, a classe é `ApplicationConfig`.
+
+Outra coisa que precisa ser feita é configurar a `public key` para verificar a 
assinatura do JWT anexada no cabeçalho `Authorization'.
+É assinado na criação com a `private key` do issuer.
+Isso é feito para evitar o uso moderado do token enquanto ele viaja do 
chamador até o endpoint.
+Geralmente, a emissão do JWT ocorre em um módulo ou microsserviço especial 
responsável pela autenticação dos usuários.
+Neste projeto de amostra, isso acontece no `BookstoreTest`.
+
+Cada tempo de execução de suporte ao MicroProfile JWT deve poder verificar se 
a assinatura está correta e se o conteúdo assinado não é alterado ao longo do 
caminho.
+Para fazer isso, ele precisa ter acesso a uma `public key`.
+Essa `public key` pode estar no formato `PKCS#8 PEM, JWK ou JWKS`.
+Desde o MP JWT 1.1 (que é suportado pelo TomEE), a chave pode ser fornecida 
como uma string na propriedade de configuração `mp.jwt.verify.publickey` ou 
como um local ou URL de arquivo especificado em 
`mp.jwt.verify.publickey.location` na propriedade de configuração.
+
+Neste projeto de amostra, você pode ver a primeira opção.
+O arquivo `src/main/resource/META-INF/microprofile-config.properties` contém a 
seguinte entrada:
+
+[source,properties]
+----
+mp.jwt.verify.publickey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlivFI8qB4D0y2jy0CfEqFyy46R0o7S8TKpsx5xbHKoU1VWg6QkQm+ntyIv1p4kE1sPEQO73+HY8+Bzs75XwRTYL1BmR1w8J5hmjVWjc6R2BTBGAYRPFRhor3kpM6ni2SPmNNhurEAHw7TaqszP5eUF/F9+KEBWkwVta+PZ37bwqSE4sCb1soZFrVz/UT/LF4tYpuVYt3YbqToZ3pZOZ9AX2o1GCG3xwOjkc4x0W7ezbQZdC9iftPxVHR8irOijJRRjcPDtA6vPKpzLl6CyYnsIYPd99ltwxTHjr3npfv/3Lw50bAkbT4HeLFxTx4flEoZLKO/g0bAoV2uqBhkA9xnQIDAQAB
+----
+
+== trabalhando com JWT
+
+A classe `BookResource` neste projeto de amostra mostra dois casos em que você 
pode usar a especificação MP JWT: obter o valor de uma declaração JWT e o 
controle de acesso baseado em função dos endpoints REST.
+
+=== Obtenção de valores de claim
+
+O token da web JSON (JWT) anexado no cabeçalho HTTP `Authorization` é 
essencialmente um objeto JSON que contém vários atributos.
+Esses atributos são chamados _claims_.
+Você pode obter o valor de cada claim dentro de um bean CDI injetando-o e 
qualificando-o com a anotação `@Claim`.
+
+Por exemplo, se você deseja recuperar a claim de nome de usuário preferida, 
fazendo o seguinte:
+
+[source,java]
+----
+    @Inject
+    @Claim(standard = Claims.preferred_username)
+    private String userName;
+----
+
+NOTE: Observe que você não pode injetar claims dessa maneira em uma classe de 
recurso REST que também contém endpoints não autenticados.
+No entanto, o TomEE tentará extrair a claim do JWT.
+Portanto, se não houver JWT ou se a claim não estiver lá, o request falhará.
+
+=== Controle de acesso baseado em função (RBAC)
+
+Uma das claims padrão definidas na especificação MP JWT é `groups`.
+Ele contém uma lista de Strings, que representam os grupos aos quais o 
chamador pertence.
+A especificação não distingue funções e grupos de usuários.
+Portanto, a declaração `groups` também pode conter as funções atribuídas a um 
determinado usuário.
+
+Nesse sentido, o MP JWT possui grande integração com os mecanismos de 
segurança Java EE existentes, como a anotação `@RolesAllowed`.
+Portanto, o seguinte método `BookResource` pode ser chamado pelos usuários que 
estão na função `reader` ou `manager` (ou em ambos):
+
+[source,java]
+----
+    @GET
+    @Path("/{id}")
+    @RolesAllowed({"manager", "reader"})
+    public Book getBook(@PathParam("id") int id) {
+        return booksBean.getBook(id);
+    }
+----
+
+No entanto, o método abaixo resultará no código HTTP 403 se chamado por um 
usuário que não possui a função `manager` em sua declaração `groups`:
+
+[source,java]
+----
+    @POST
+    @RolesAllowed("manager")
+    public void addBook(Book newBook) {
+        booksBean.addBook(newBook);
+    }
+----
+
+== O teste do bookstore
+
+O projeto de amostra contém um teste Arquillian 
(`org.superbiz.bookstore.BookstoreTest`) usado por alguns motivos:

Review comment:
       ```suggestion
   O projeto de exemplo contém um teste do Arquillian 
(`org.superbiz.bookstore.BookstoreTest`) usado por alguns motivos:
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.
+O teste Arquillian é responsável por gerar os JWTs e anexá-los os requests.

Review comment:
       ```suggestion
   O teste do Arquillian é responsável por gerar os JWTs e anexá-los aos 
requests.
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.
+O teste Arquillian é responsável por gerar os JWTs e anexá-los os requests.
+
+== Configuração no TomEE
+
+Para ativar o JWT, você precisa anotar sua classe de aplicação REST com a 
anotação `org.eclipse.microprofile.auth.LoginConfig`.
+Neste exemplo, a classe é `ApplicationConfig`.
+
+Outra coisa que precisa ser feita é configurar a `public key` para verificar a 
assinatura do JWT anexada no cabeçalho `Authorization'.
+É assinado na criação com a `private key` do issuer.
+Isso é feito para evitar o uso moderado do token enquanto ele viaja do 
chamador até o endpoint.
+Geralmente, a emissão do JWT ocorre em um módulo ou microsserviço especial 
responsável pela autenticação dos usuários.
+Neste projeto de amostra, isso acontece no `BookstoreTest`.
+
+Cada tempo de execução de suporte ao MicroProfile JWT deve poder verificar se 
a assinatura está correta e se o conteúdo assinado não é alterado ao longo do 
caminho.
+Para fazer isso, ele precisa ter acesso a uma `public key`.
+Essa `public key` pode estar no formato `PKCS#8 PEM, JWK ou JWKS`.
+Desde o MP JWT 1.1 (que é suportado pelo TomEE), a chave pode ser fornecida 
como uma string na propriedade de configuração `mp.jwt.verify.publickey` ou 
como um local ou URL de arquivo especificado em 
`mp.jwt.verify.publickey.location` na propriedade de configuração.
+
+Neste projeto de amostra, você pode ver a primeira opção.
+O arquivo `src/main/resource/META-INF/microprofile-config.properties` contém a 
seguinte entrada:
+
+[source,properties]
+----
+mp.jwt.verify.publickey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlivFI8qB4D0y2jy0CfEqFyy46R0o7S8TKpsx5xbHKoU1VWg6QkQm+ntyIv1p4kE1sPEQO73+HY8+Bzs75XwRTYL1BmR1w8J5hmjVWjc6R2BTBGAYRPFRhor3kpM6ni2SPmNNhurEAHw7TaqszP5eUF/F9+KEBWkwVta+PZ37bwqSE4sCb1soZFrVz/UT/LF4tYpuVYt3YbqToZ3pZOZ9AX2o1GCG3xwOjkc4x0W7ezbQZdC9iftPxVHR8irOijJRRjcPDtA6vPKpzLl6CyYnsIYPd99ltwxTHjr3npfv/3Lw50bAkbT4HeLFxTx4flEoZLKO/g0bAoV2uqBhkA9xnQIDAQAB
+----
+
+== trabalhando com JWT
+
+A classe `BookResource` neste projeto de amostra mostra dois casos em que você 
pode usar a especificação MP JWT: obter o valor de uma declaração JWT e o 
controle de acesso baseado em função dos endpoints REST.

Review comment:
       ```suggestion
   A classe `BookResource` neste projeto de exemplo mostra dois casos em que 
você pode usar a especificação MP JWT: obter o valor de uma declaração JWT e o 
controle de acesso baseado em função dos endpoints REST.
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.
+O teste Arquillian é responsável por gerar os JWTs e anexá-los os requests.
+
+== Configuração no TomEE
+
+Para ativar o JWT, você precisa anotar sua classe de aplicação REST com a 
anotação `org.eclipse.microprofile.auth.LoginConfig`.
+Neste exemplo, a classe é `ApplicationConfig`.
+
+Outra coisa que precisa ser feita é configurar a `public key` para verificar a 
assinatura do JWT anexada no cabeçalho `Authorization'.
+É assinado na criação com a `private key` do issuer.
+Isso é feito para evitar o uso moderado do token enquanto ele viaja do 
chamador até o endpoint.

Review comment:
       Here, it seems that word *moderado* don't take sense. But whether 
consider that word *tempering*, from English version, is mistaken of 
*tampering*, will take more sense.
   Would be great whether someone could validate my deduce above.
   Therefore, if my deduce its ok, follows my suggestion:
   ```suggestion
   Isso é feito para evitar adulteração do token enquanto ele trafega do 
chamador até o endpoint.
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.

Review comment:
       ```suggestion
   Este projeto inclui uma aplicação de exemplo e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.
+O teste Arquillian é responsável por gerar os JWTs e anexá-los os requests.
+
+== Configuração no TomEE
+
+Para ativar o JWT, você precisa anotar sua classe de aplicação REST com a 
anotação `org.eclipse.microprofile.auth.LoginConfig`.
+Neste exemplo, a classe é `ApplicationConfig`.
+
+Outra coisa que precisa ser feita é configurar a `public key` para verificar a 
assinatura do JWT anexada no cabeçalho `Authorization'.
+É assinado na criação com a `private key` do issuer.
+Isso é feito para evitar o uso moderado do token enquanto ele viaja do 
chamador até o endpoint.
+Geralmente, a emissão do JWT ocorre em um módulo ou microsserviço especial 
responsável pela autenticação dos usuários.
+Neste projeto de amostra, isso acontece no `BookstoreTest`.

Review comment:
       ```suggestion
   Neste projeto de exemplo, isso acontece no `BookstoreTest`.
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.
+O teste Arquillian é responsável por gerar os JWTs e anexá-los os requests.
+
+== Configuração no TomEE
+
+Para ativar o JWT, você precisa anotar sua classe de aplicação REST com a 
anotação `org.eclipse.microprofile.auth.LoginConfig`.
+Neste exemplo, a classe é `ApplicationConfig`.
+
+Outra coisa que precisa ser feita é configurar a `public key` para verificar a 
assinatura do JWT anexada no cabeçalho `Authorization'.
+É assinado na criação com a `private key` do issuer.
+Isso é feito para evitar o uso moderado do token enquanto ele viaja do 
chamador até o endpoint.
+Geralmente, a emissão do JWT ocorre em um módulo ou microsserviço especial 
responsável pela autenticação dos usuários.
+Neste projeto de amostra, isso acontece no `BookstoreTest`.
+
+Cada tempo de execução de suporte ao MicroProfile JWT deve poder verificar se 
a assinatura está correta e se o conteúdo assinado não é alterado ao longo do 
caminho.
+Para fazer isso, ele precisa ter acesso a uma `public key`.
+Essa `public key` pode estar no formato `PKCS#8 PEM, JWK ou JWKS`.
+Desde o MP JWT 1.1 (que é suportado pelo TomEE), a chave pode ser fornecida 
como uma string na propriedade de configuração `mp.jwt.verify.publickey` ou 
como um local ou URL de arquivo especificado em 
`mp.jwt.verify.publickey.location` na propriedade de configuração.
+
+Neste projeto de amostra, você pode ver a primeira opção.

Review comment:
       ```suggestion
   Neste projeto de exemplo, você pode ver a primeira opção.
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.
+O teste Arquillian é responsável por gerar os JWTs e anexá-los os requests.
+
+== Configuração no TomEE
+
+Para ativar o JWT, você precisa anotar sua classe de aplicação REST com a 
anotação `org.eclipse.microprofile.auth.LoginConfig`.
+Neste exemplo, a classe é `ApplicationConfig`.
+
+Outra coisa que precisa ser feita é configurar a `public key` para verificar a 
assinatura do JWT anexada no cabeçalho `Authorization'.
+É assinado na criação com a `private key` do issuer.
+Isso é feito para evitar o uso moderado do token enquanto ele viaja do 
chamador até o endpoint.
+Geralmente, a emissão do JWT ocorre em um módulo ou microsserviço especial 
responsável pela autenticação dos usuários.
+Neste projeto de amostra, isso acontece no `BookstoreTest`.
+
+Cada tempo de execução de suporte ao MicroProfile JWT deve poder verificar se 
a assinatura está correta e se o conteúdo assinado não é alterado ao longo do 
caminho.

Review comment:
       ```suggestion
   Cada ambiente de execução que suporta o MicroProfile JWT deveria ser capaz 
de verificar se a assinatura está correta e se o conteúdo assinado não é 
alterado ao longo do caminho.
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.
+O teste Arquillian é responsável por gerar os JWTs e anexá-los os requests.
+
+== Configuração no TomEE
+
+Para ativar o JWT, você precisa anotar sua classe de aplicação REST com a 
anotação `org.eclipse.microprofile.auth.LoginConfig`.
+Neste exemplo, a classe é `ApplicationConfig`.
+
+Outra coisa que precisa ser feita é configurar a `public key` para verificar a 
assinatura do JWT anexada no cabeçalho `Authorization'.
+É assinado na criação com a `private key` do issuer.
+Isso é feito para evitar o uso moderado do token enquanto ele viaja do 
chamador até o endpoint.
+Geralmente, a emissão do JWT ocorre em um módulo ou microsserviço especial 
responsável pela autenticação dos usuários.
+Neste projeto de amostra, isso acontece no `BookstoreTest`.
+
+Cada tempo de execução de suporte ao MicroProfile JWT deve poder verificar se 
a assinatura está correta e se o conteúdo assinado não é alterado ao longo do 
caminho.
+Para fazer isso, ele precisa ter acesso a uma `public key`.
+Essa `public key` pode estar no formato `PKCS#8 PEM, JWK ou JWKS`.
+Desde o MP JWT 1.1 (que é suportado pelo TomEE), a chave pode ser fornecida 
como uma string na propriedade de configuração `mp.jwt.verify.publickey` ou 
como um local ou URL de arquivo especificado em 
`mp.jwt.verify.publickey.location` na propriedade de configuração.
+
+Neste projeto de amostra, você pode ver a primeira opção.
+O arquivo `src/main/resource/META-INF/microprofile-config.properties` contém a 
seguinte entrada:
+
+[source,properties]
+----
+mp.jwt.verify.publickey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlivFI8qB4D0y2jy0CfEqFyy46R0o7S8TKpsx5xbHKoU1VWg6QkQm+ntyIv1p4kE1sPEQO73+HY8+Bzs75XwRTYL1BmR1w8J5hmjVWjc6R2BTBGAYRPFRhor3kpM6ni2SPmNNhurEAHw7TaqszP5eUF/F9+KEBWkwVta+PZ37bwqSE4sCb1soZFrVz/UT/LF4tYpuVYt3YbqToZ3pZOZ9AX2o1GCG3xwOjkc4x0W7ezbQZdC9iftPxVHR8irOijJRRjcPDtA6vPKpzLl6CyYnsIYPd99ltwxTHjr3npfv/3Lw50bAkbT4HeLFxTx4flEoZLKO/g0bAoV2uqBhkA9xnQIDAQAB
+----
+
+== trabalhando com JWT

Review comment:
       ```suggestion
   == Trabalhando com JWT
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.

Review comment:
       ```suggestion
   Todos esperam que o cliente forneça um JSON Web Token (JWT) válido, 
representando um usuário com determinadas funções.
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.
+O teste Arquillian é responsável por gerar os JWTs e anexá-los os requests.
+
+== Configuração no TomEE
+
+Para ativar o JWT, você precisa anotar sua classe de aplicação REST com a 
anotação `org.eclipse.microprofile.auth.LoginConfig`.
+Neste exemplo, a classe é `ApplicationConfig`.
+
+Outra coisa que precisa ser feita é configurar a `public key` para verificar a 
assinatura do JWT anexada no cabeçalho `Authorization'.
+É assinado na criação com a `private key` do issuer.
+Isso é feito para evitar o uso moderado do token enquanto ele viaja do 
chamador até o endpoint.
+Geralmente, a emissão do JWT ocorre em um módulo ou microsserviço especial 
responsável pela autenticação dos usuários.
+Neste projeto de amostra, isso acontece no `BookstoreTest`.
+
+Cada tempo de execução de suporte ao MicroProfile JWT deve poder verificar se 
a assinatura está correta e se o conteúdo assinado não é alterado ao longo do 
caminho.
+Para fazer isso, ele precisa ter acesso a uma `public key`.
+Essa `public key` pode estar no formato `PKCS#8 PEM, JWK ou JWKS`.
+Desde o MP JWT 1.1 (que é suportado pelo TomEE), a chave pode ser fornecida 
como uma string na propriedade de configuração `mp.jwt.verify.publickey` ou 
como um local ou URL de arquivo especificado em 
`mp.jwt.verify.publickey.location` na propriedade de configuração.
+
+Neste projeto de amostra, você pode ver a primeira opção.
+O arquivo `src/main/resource/META-INF/microprofile-config.properties` contém a 
seguinte entrada:
+
+[source,properties]
+----
+mp.jwt.verify.publickey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlivFI8qB4D0y2jy0CfEqFyy46R0o7S8TKpsx5xbHKoU1VWg6QkQm+ntyIv1p4kE1sPEQO73+HY8+Bzs75XwRTYL1BmR1w8J5hmjVWjc6R2BTBGAYRPFRhor3kpM6ni2SPmNNhurEAHw7TaqszP5eUF/F9+KEBWkwVta+PZ37bwqSE4sCb1soZFrVz/UT/LF4tYpuVYt3YbqToZ3pZOZ9AX2o1GCG3xwOjkc4x0W7ezbQZdC9iftPxVHR8irOijJRRjcPDtA6vPKpzLl6CyYnsIYPd99ltwxTHjr3npfv/3Lw50bAkbT4HeLFxTx4flEoZLKO/g0bAoV2uqBhkA9xnQIDAQAB
+----
+
+== trabalhando com JWT
+
+A classe `BookResource` neste projeto de amostra mostra dois casos em que você 
pode usar a especificação MP JWT: obter o valor de uma declaração JWT e o 
controle de acesso baseado em função dos endpoints REST.
+
+=== Obtenção de valores de claim
+
+O token da web JSON (JWT) anexado no cabeçalho HTTP `Authorization` é 
essencialmente um objeto JSON que contém vários atributos.
+Esses atributos são chamados _claims_.
+Você pode obter o valor de cada claim dentro de um bean CDI injetando-o e 
qualificando-o com a anotação `@Claim`.
+
+Por exemplo, se você deseja recuperar a claim de nome de usuário preferida, 
fazendo o seguinte:
+
+[source,java]
+----
+    @Inject
+    @Claim(standard = Claims.preferred_username)
+    private String userName;
+----
+
+NOTE: Observe que você não pode injetar claims dessa maneira em uma classe de 
recurso REST que também contém endpoints não autenticados.
+No entanto, o TomEE tentará extrair a claim do JWT.
+Portanto, se não houver JWT ou se a claim não estiver lá, o request falhará.
+
+=== Controle de acesso baseado em função (RBAC)
+
+Uma das claims padrão definidas na especificação MP JWT é `groups`.
+Ele contém uma lista de Strings, que representam os grupos aos quais o 
chamador pertence.
+A especificação não distingue funções e grupos de usuários.
+Portanto, a declaração `groups` também pode conter as funções atribuídas a um 
determinado usuário.
+
+Nesse sentido, o MP JWT possui grande integração com os mecanismos de 
segurança Java EE existentes, como a anotação `@RolesAllowed`.
+Portanto, o seguinte método `BookResource` pode ser chamado pelos usuários que 
estão na função `reader` ou `manager` (ou em ambos):
+
+[source,java]
+----
+    @GET
+    @Path("/{id}")
+    @RolesAllowed({"manager", "reader"})
+    public Book getBook(@PathParam("id") int id) {
+        return booksBean.getBook(id);
+    }
+----
+
+No entanto, o método abaixo resultará no código HTTP 403 se chamado por um 
usuário que não possui a função `manager` em sua declaração `groups`:
+
+[source,java]
+----
+    @POST
+    @RolesAllowed("manager")
+    public void addBook(Book newBook) {
+        booksBean.addBook(newBook);
+    }
+----
+
+== O teste do bookstore
+
+O projeto de amostra contém um teste Arquillian 
(`org.superbiz.bookstore.BookstoreTest`) usado por alguns motivos:
+
+* Generating the JSON web token (JWT)

Review comment:
       ```suggestion
   * Geração do JSON Web Token (JWT)
   ```

##########
File path: examples/mp-rest-jwt-public-key/README_pt.adoc
##########
@@ -0,0 +1,110 @@
+:index-group: MicroProfile
+:jbake-type: page
+:jbake-status: published
+
+= MP REST JWT com Public key do MP Config
+
+Este é um exemplo de como configurar e usar o MicroProfile JWT 1.1 no TomEE.
+
+== Executando o teste
+
+Este projeto inclui uma aplicação de amostra e um teste do Arquillian para 
mostrar o controle de acesso baseado em função (RBAC) com JWT no MicroProfile.
+Para executar o cenário, você pode executar o seguinte comando:
+
+[source, bash]
+----
+mvn clean test
+----
+
+A aplicação representa um recurso REST de livraria com alguns endpoints.
+Todos esperam que o cliente forneça um token da web JSON (JWT) válido, 
representando um usuário com determinadas funções.
+O teste Arquillian é responsável por gerar os JWTs e anexá-los os requests.
+
+== Configuração no TomEE
+
+Para ativar o JWT, você precisa anotar sua classe de aplicação REST com a 
anotação `org.eclipse.microprofile.auth.LoginConfig`.
+Neste exemplo, a classe é `ApplicationConfig`.
+
+Outra coisa que precisa ser feita é configurar a `public key` para verificar a 
assinatura do JWT anexada no cabeçalho `Authorization'.
+É assinado na criação com a `private key` do issuer.
+Isso é feito para evitar o uso moderado do token enquanto ele viaja do 
chamador até o endpoint.
+Geralmente, a emissão do JWT ocorre em um módulo ou microsserviço especial 
responsável pela autenticação dos usuários.
+Neste projeto de amostra, isso acontece no `BookstoreTest`.
+
+Cada tempo de execução de suporte ao MicroProfile JWT deve poder verificar se 
a assinatura está correta e se o conteúdo assinado não é alterado ao longo do 
caminho.
+Para fazer isso, ele precisa ter acesso a uma `public key`.
+Essa `public key` pode estar no formato `PKCS#8 PEM, JWK ou JWKS`.
+Desde o MP JWT 1.1 (que é suportado pelo TomEE), a chave pode ser fornecida 
como uma string na propriedade de configuração `mp.jwt.verify.publickey` ou 
como um local ou URL de arquivo especificado em 
`mp.jwt.verify.publickey.location` na propriedade de configuração.
+
+Neste projeto de amostra, você pode ver a primeira opção.
+O arquivo `src/main/resource/META-INF/microprofile-config.properties` contém a 
seguinte entrada:
+
+[source,properties]
+----
+mp.jwt.verify.publickey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlivFI8qB4D0y2jy0CfEqFyy46R0o7S8TKpsx5xbHKoU1VWg6QkQm+ntyIv1p4kE1sPEQO73+HY8+Bzs75XwRTYL1BmR1w8J5hmjVWjc6R2BTBGAYRPFRhor3kpM6ni2SPmNNhurEAHw7TaqszP5eUF/F9+KEBWkwVta+PZ37bwqSE4sCb1soZFrVz/UT/LF4tYpuVYt3YbqToZ3pZOZ9AX2o1GCG3xwOjkc4x0W7ezbQZdC9iftPxVHR8irOijJRRjcPDtA6vPKpzLl6CyYnsIYPd99ltwxTHjr3npfv/3Lw50bAkbT4HeLFxTx4flEoZLKO/g0bAoV2uqBhkA9xnQIDAQAB
+----
+
+== trabalhando com JWT
+
+A classe `BookResource` neste projeto de amostra mostra dois casos em que você 
pode usar a especificação MP JWT: obter o valor de uma declaração JWT e o 
controle de acesso baseado em função dos endpoints REST.
+
+=== Obtenção de valores de claim
+
+O token da web JSON (JWT) anexado no cabeçalho HTTP `Authorization` é 
essencialmente um objeto JSON que contém vários atributos.
+Esses atributos são chamados _claims_.
+Você pode obter o valor de cada claim dentro de um bean CDI injetando-o e 
qualificando-o com a anotação `@Claim`.
+
+Por exemplo, se você deseja recuperar a claim de nome de usuário preferida, 
fazendo o seguinte:
+
+[source,java]
+----
+    @Inject
+    @Claim(standard = Claims.preferred_username)
+    private String userName;
+----
+
+NOTE: Observe que você não pode injetar claims dessa maneira em uma classe de 
recurso REST que também contém endpoints não autenticados.
+No entanto, o TomEE tentará extrair a claim do JWT.
+Portanto, se não houver JWT ou se a claim não estiver lá, o request falhará.
+
+=== Controle de acesso baseado em função (RBAC)
+
+Uma das claims padrão definidas na especificação MP JWT é `groups`.
+Ele contém uma lista de Strings, que representam os grupos aos quais o 
chamador pertence.
+A especificação não distingue funções e grupos de usuários.
+Portanto, a declaração `groups` também pode conter as funções atribuídas a um 
determinado usuário.
+
+Nesse sentido, o MP JWT possui grande integração com os mecanismos de 
segurança Java EE existentes, como a anotação `@RolesAllowed`.
+Portanto, o seguinte método `BookResource` pode ser chamado pelos usuários que 
estão na função `reader` ou `manager` (ou em ambos):
+
+[source,java]
+----
+    @GET
+    @Path("/{id}")
+    @RolesAllowed({"manager", "reader"})
+    public Book getBook(@PathParam("id") int id) {
+        return booksBean.getBook(id);
+    }
+----
+
+No entanto, o método abaixo resultará no código HTTP 403 se chamado por um 
usuário que não possui a função `manager` em sua declaração `groups`:
+
+[source,java]
+----
+    @POST
+    @RolesAllowed("manager")
+    public void addBook(Book newBook) {
+        booksBean.addBook(newBook);
+    }
+----
+
+== O teste do bookstore
+
+O projeto de amostra contém um teste Arquillian 
(`org.superbiz.bookstore.BookstoreTest`) usado por alguns motivos:
+
+* Generating the JSON web token (JWT)
+* Apresentando o comportamento do TomEE em diferentes situações

Review comment:
       ```suggestion
   * Apresentação do comportamento do TomEE em diferentes situações
   ```




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to