diff --git a/demoiselle-security-jwt/pom.xml b/demoiselle-security-jwt/pom.xml index 2bca3fd..0d8bdea 100644 --- a/demoiselle-security-jwt/pom.xml +++ b/demoiselle-security-jwt/pom.xml @@ -26,14 +26,7 @@ org.bitbucket.b_c jose4j - 0.4.1 - - - - com.google.code.gson - gson - 2.2.2 - compile + 0.5.2 diff --git a/demoiselle-security-jwt/src/main/java/org/demoiselle/jee/security/jwt/impl/TokensManagerImpl.java b/demoiselle-security-jwt/src/main/java/org/demoiselle/jee/security/jwt/impl/TokensManagerImpl.java index 76bac97..6a3b03c 100644 --- a/demoiselle-security-jwt/src/main/java/org/demoiselle/jee/security/jwt/impl/TokensManagerImpl.java +++ b/demoiselle-security-jwt/src/main/java/org/demoiselle/jee/security/jwt/impl/TokensManagerImpl.java @@ -14,6 +14,7 @@ import javax.servlet.http.HttpServletRequest; import org.demoiselle.jee.core.interfaces.security.DemoisellePrincipal; import org.demoiselle.jee.core.interfaces.security.Token; import org.demoiselle.jee.core.interfaces.security.TokensManager; +import org.jose4j.jwk.JsonWebKey; import org.jose4j.jwk.RsaJsonWebKey; import org.jose4j.jwk.RsaJwkGenerator; import org.jose4j.jws.AlgorithmIdentifiers; @@ -47,7 +48,8 @@ public class TokensManagerImpl implements TokensManager { public TokensManagerImpl() throws JoseException { if (rsaJsonWebKey == null) { - rsaJsonWebKey = (RsaJsonWebKey) RsaJsonWebKey.Factory.newPublicJwk(RsaJwkGenerator.generateJwk(2048).getKey()); + String chave = RsaJwkGenerator.generateJwk(2048).toJson(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE); + rsaJsonWebKey = (RsaJsonWebKey) RsaJsonWebKey.Factory.newPublicJwk(chave); rsaJsonWebKey.setKeyId("demoiselle-security-jwt"); } } @@ -61,7 +63,8 @@ public class TokensManagerImpl implements TokensManager { .setAllowedClockSkewInSeconds(60) // allow some leeway in validating time based claims to account for clock skew .setExpectedIssuer("demoiselle") // whom the JWT needs to have been issued by .setExpectedAudience("demoiselle") // to whom the JWT is intended for - .setVerificationKey(rsaJsonWebKey.getKey()) // verify the signature with the public key + .setDecryptionKey(rsaJsonWebKey.getPrivateKey()) // decrypt with the receiver's private key + .setVerificationKey(rsaJsonWebKey.getPublicKey()) .build(); // create the JwtConsumer instance JwtClaims jwtClaims = jwtConsumer.processToClaims(token.getKey()); loggedUser.setId((String) jwtClaims.getClaimValue("id")); @@ -102,14 +105,14 @@ public class TokensManagerImpl implements TokensManager { JsonWebSignature jws = new JsonWebSignature(); jws.setPayload(claims.toJson()); - jws.setKey(rsaJsonWebKey.getKey()); + jws.setKey(rsaJsonWebKey.getRsaPrivateKey()); jws.setKeyIdHeaderValue(rsaJsonWebKey.getKeyId()); - jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA512); + jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256); token.setKey(jws.getCompactSerialization()); token.setType("JWT"); } catch (JoseException ex) { - ex.printStackTrace(); - // logger.severe(ex.getMessage()); + //ex.printStackTrace(); + logger.severe(ex.getMessage()); } } diff --git a/demoiselle-security-token/src/main/java/org/demoiselle/jee/security/token/impl/TokensManagerImpl.java b/demoiselle-security-token/src/main/java/org/demoiselle/jee/security/token/impl/TokensManagerImpl.java index e73a384..306c96d 100644 --- a/demoiselle-security-token/src/main/java/org/demoiselle/jee/security/token/impl/TokensManagerImpl.java +++ b/demoiselle-security-token/src/main/java/org/demoiselle/jee/security/token/impl/TokensManagerImpl.java @@ -8,7 +8,7 @@ package org.demoiselle.jee.security.token.impl; import static java.util.UUID.randomUUID; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; -import javax.enterprise.context.Dependent; +import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import org.demoiselle.jee.core.interfaces.security.DemoisellePrincipal; import org.demoiselle.jee.core.interfaces.security.Token; @@ -18,10 +18,10 @@ import org.demoiselle.jee.core.interfaces.security.TokensManager; * * @author 70744416353 */ -@Dependent +@ApplicationScoped public class TokensManagerImpl implements TokensManager { - private static ConcurrentHashMap repo = new ConcurrentHashMap<>(); + private ConcurrentHashMap repo = new ConcurrentHashMap<>(); @Inject private Logger logger; @@ -56,7 +56,7 @@ public class TokensManagerImpl implements TokensManager { @Override public boolean validate() { - return getUser() != null && getUser().getId() != null; + return getUser() != null; } } diff --git a/demoiselle-security/src/main/java/org/demoiselle/jee/security/impl/SecurityContextImpl.java b/demoiselle-security/src/main/java/org/demoiselle/jee/security/impl/SecurityContextImpl.java index 3f054cd..053d92e 100644 --- a/demoiselle-security/src/main/java/org/demoiselle/jee/security/impl/SecurityContextImpl.java +++ b/demoiselle-security/src/main/java/org/demoiselle/jee/security/impl/SecurityContextImpl.java @@ -6,6 +6,7 @@ */ package org.demoiselle.jee.security.impl; +import javax.enterprise.context.Dependent; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import org.demoiselle.jee.core.interfaces.security.DemoisellePrincipal; diff --git a/demoiselle-security/src/main/java/org/demoiselle/jee/security/interceptor/RequiredPermissionInterceptor.java b/demoiselle-security/src/main/java/org/demoiselle/jee/security/interceptor/RequiredPermissionInterceptor.java index 70cd5b2..0fbfc11 100644 --- a/demoiselle-security/src/main/java/org/demoiselle/jee/security/interceptor/RequiredPermissionInterceptor.java +++ b/demoiselle-security/src/main/java/org/demoiselle/jee/security/interceptor/RequiredPermissionInterceptor.java @@ -76,7 +76,6 @@ public class RequiredPermissionInterceptor implements Serializable { } if (!securityContext.hasPermission(resource, operation)) { - logger.severe(bundle.doesNotHavePermission(operation, resource)); throw new DemoiselleSecurityException(bundle.doesNotHavePermission(operation, resource), UNAUTHORIZED.getStatusCode()); } diff --git a/demoiselle-security/src/main/java/org/demoiselle/jee/security/interceptor/RequiredRoleInterceptor.java b/demoiselle-security/src/main/java/org/demoiselle/jee/security/interceptor/RequiredRoleInterceptor.java index 6a95773..e0ba6ba 100644 --- a/demoiselle-security/src/main/java/org/demoiselle/jee/security/interceptor/RequiredRoleInterceptor.java +++ b/demoiselle-security/src/main/java/org/demoiselle/jee/security/interceptor/RequiredRoleInterceptor.java @@ -83,7 +83,6 @@ public class RequiredRoleInterceptor implements Serializable { } if (userRoles.isEmpty()) { - logger.severe(bundle.doesNotHaveRole(roles.toString())); throw new DemoiselleSecurityException(bundle.doesNotHaveRole(roles.toString()), UNAUTHORIZED.getStatusCode()); } -- libgit2 0.21.2