Preloader image

TomEE tiene una particular característica que permite el uso de Validación de Bean como alternativa o complemento de la anotación @RolesAllowed.

La motivación para esta función es que JsonWebToken es efectivamente un bean, y una verificación de seguridad es, en última instancia, un acto de producir un resultado booleano utilizando una entrada mínima. Es un problema perfecto para la Validación de Bean.

La característica en última instancia le permite implementar un método como este:

@Override
public boolean isValid(final JsonWebToken jsonWebToken, final ConstraintValidatorContext context) {
    // your code here
    return ...;
}

Entonces adjunte la siguiente lógica a cualquier anotación de su creación como @Issuer. Luego use esa anotación en sus métodos, y el código anterior se ejecutará cada vez que se invoque el servicio JAX-RS.

@GET
@Issuer("https://movies.example.com")
@RolesAllowed({"manager", "user"})
public List<Movie> getAllMovies() {
    return new ArrayList<>(store.values());
}

Si desea recibir información a través de la anotación, sobreescriba el método initialize.

    @Override
    public void initialize(final Issuer issuer) {
        this.issuer = issuer;
    }

Aquí, Issuer es una anotación en el código de la aplicación.

Puede validar los 'roles', o partes personalizados como email o cualquier dato en el token que desee. La interfaz JsonWebToken puede proporcionarle el JWT codificado completo o partes individuales. Entonces a partir de aqui no existen limites, si puede ponerlo en un token, puede validarlo.

La validacion de Bean le permite tener muchas anotaciones de validación. Una anotación puede reutilizar otra, por lo que incluso puede tener una anotación de validación compuesta de varias anotaciones de validación más pequeñas, todas las que se quieran crear.