Preloader image

Este é um exemplo de como usar MicroProfile JWT em TomEE usando a public key como JWKs.

Executando a aplicação:

mvn clean install tomee:run

Este exemplo é uma aplicação CRUD para produtos disponíveis.

Requisitos e configuração

Para o uso do MicroProfile JWT, precisamos alterar o seguinte em nosso projeto:

  1. Adicione a dependência ao nosso arquivo pom.xml:

    <dependency>
        <groupId>org.eclipse.microprofile.jwt</groupId>
        <artifactId>microprofile-jwt-auth-api</artifactId>
        <version>${mp-jwt.version}</version>
        <scope>provided</scope>
    </dependency>
  2. Anote nossa Application.class com @LoginConfig(authMethod = "MP-JWT")

  3. Forneça public key para validação do JWT. E especifique o local da public key e do emissor em nosso arquivo microprofile-config.properties. A public key é então usada para verificação da assinatura no diretório JWT.

    mp.jwt.verify.publickey.location=/jwks.pem
    mp.jwt.verify.issuer=https://example.com
  4. Defina @RolesAllowed() nos pontos de extremidade que queremos proteger.

Sobre a arquitetura do aplicativo

O aplicativo nos permite manipular e visualizar produtos com usuários específicos. Temos dois usuários: Alice Wonder e John Doe. Eles podem ler, criar, editar e excluir entradas específicas.

jwt-john.json

{
  "iss": "https://example.com",
  "sub": "24400320",
  "name": "John Doe",
  "upn": "john.doe@example.com",
  "preferred_username": "john",
  "groups": [
    "guest", "admin"
  ]
}

Acesse os endpoints com JWT token

Acessamos os endpoints de nossa classe de teste criando um JWT com a ajuda do nosso TokenUtils.generateJWTString (String jsonResource, String keyId) que assina nossos dados de usuário no formato json com a ajuda do nosso private key src/test/resources/{keyId} .

Também podemos gerar novos privateKey.pem e publicKey.pem com o método GenerateKeyUtils.generateKeyPair (String keyAlgorithm, int keySize) que cria o publicKey.pem também no formato` JWK`.