Github user jeanouii commented on a diff in the pull request:

    https://github.com/apache/tomee/pull/342#discussion_r244751685
  
    --- Diff: examples/mp-rest-jwt-jwk/README.adoc ---
    @@ -0,0 +1,76 @@
    += MicroProfile JWT JWKs
    +:index-group: MicroProfile
    +:jbake-type: page
    +:jbake-status: published
    +
    +This is an example on how to use MicroProfile JWT in TomEE by using the
    +public key as JWKs.
    +
    +== Run the application:
    +
    +[source, bash]
    +----
    +mvn clean install tomee:run
    +----
    +
    +This example is a CRUD application for products available.
    +
    +== Requirments and configuration
    +
    +For usage of MicroProfile JWT we have to change the following to our
    +project:
    +
    +[arabic]
    +. Add the dependency to our `pom.xml` file:
    ++
    +....
    +<dependency>
    +    <groupId>org.eclipse.microprofile.jwt</groupId>
    +    <artifactId>microprofile-jwt-auth-api</artifactId>
    +    <version>${mp-jwt.version}</version>
    +    <scope>provided</scope>
    +</dependency>
    +....
    +. Annotate our `Application.class` with `@LoginConfig(authMethod = 
"MP-JWT")`
    +
    +. Provide public and private key for authentication. And specify the 
location of the public key and the issuer in our
    +`microprofile-config.properties` file.
    ++
    +[source,properties]
    +----
    +mp.jwt.verify.publickey.location=/jwks.pem
    +mp.jwt.verify.issuer=https://example.com
    +----
    +
    +. Define `@RolesAllowed()` on the endpoints we want to protect.
    +
    +== About the application architecture
    +
    +The application enables us to manipulate and view products with specific 
users. We have two users
    +`Alice Wonder` and `John Doe`. They can read, create, edit and delete 
specific entries.
    +
    +`jwt-john.json`
    +
    +[source,json]
    +----
    +{
    +  "iss": "https://example.com";,
    +  "sub": "24400320",
    +  "name": "John Doe",
    +  "upn": "[email protected]",
    +  "preferred_username": "john",
    +  "groups": [
    +    "guest", "admin"
    +  ]
    +}
    +----
    +
    +== Access the endpoints with JWT token
    +
    +We access endpoints from our test class by creating a `JWT` with the help 
of
    +our `TokenUtils.generateJWTString(String jsonResource, String keyId)` 
which signs our user
    +data in json format with the help of our `src/test/resources/{keyId}` key.
    --- End diff --
    
    This is where you need the private key, but this is for testing purpose to 
generate a valide and signed JWT


---

Reply via email to