Project

General

Profile

1
package eu.dnetlib.openaire.rest.security;
2

    
3
import io.jsonwebtoken.*;
4
import org.apache.logging.log4j.LogManager;
5
import org.apache.logging.log4j.Logger;
6

    
7
import javax.xml.bind.DatatypeConverter;
8

    
9
/**
10
 * Created by kiatrop on 10/4/2017.
11
 */
12
public class JWTValidator {
13

    
14
    private static final Logger logger = LogManager.getLogger(JWTValidator.class);
15

    
16
    public static boolean isValid(String token) {
17

    
18
        //String subject = "my-very-secret";
19
        try {
20

    
21
            //This line will throw an exception if it is not a signed JWS (as expected)
22
            Claims claims = Jwts.parser()
23
                .setSigningKey(DatatypeConverter.parseBase64Binary("my-very-secret"))
24
                .parseClaimsJws(token).getBody();
25

    
26
            logger.debug("Id: " + claims.get("userId"));
27
            logger.debug("Subject: " + claims.getSubject());
28
            logger.debug("Fullname: " + claims.get("fullname"));
29
            logger.debug("Email: " + claims.get("email"));
30
            logger.debug("Role: " + claims.get("role"));
31
            logger.debug("Expiration: " + claims.getExpiration());
32

    
33
            return true;
34

    
35
        } catch (SignatureException e) {
36
            logger.error("Either calculating a signature or verifying an existing signature of a JWT failed", e);
37
            return false;
38
        } catch(PrematureJwtException e) {
39
            logger.error("A JWT was accepted before it is allowed to be accessed and must be rejected", e);
40
            return false;
41
        } catch(ClaimJwtException e){
42
            logger.error("After a validation of a JWT claim failed", e);
43
            return false;
44
        } catch(MalformedJwtException e){
45
            logger.error("A JWT was not correctly constructed and should be rejected", e);
46
            return false;
47
        } catch(UnsupportedJwtException e){
48
            logger.error("Receiving a JWT in a particular format/configuration that does not match the format expected by the application", e);
49
            return false;
50
        }
51
    }
52

    
53
//    public static void main(String[] args) {
54
//
55
//        // valid (isValid("eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJBcmdpcm8iLCJmdWxsbmFtZSI6IkFyZ2lybyBLb2tvZ2lhbmFraSIsInVzZXJJZCI6IjgiLCJlbWFpbCI6ImFyZ2lyb0BnbWFpbC5jb20iLCJyb2xlIjoyLCJleHAiOjE0OTIwMDEyMzN9.u2xTTyjF6_n60yiz-Pfj72TQIaVNRgxt7Qe8w_AxoTBulKuiq6ldzZHDvgcef2jsA12TFRgfIyfXhsTj-04P5A"))
56
//        // not valid "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJBcmdpcm8iLCJmdWxsbmFtZSI6IkFyZ2lybyBLb2tvZ2lhbmFraSIsInVzZXJJZCI6IjgiLCJlbWFpbCI6ImFyZ2lyb0BnbWFpbC5jb20iLCJyb2xlIjoyLCJleHAiOjE0OTE5ODk2Njh9.JUiFGEverBVbo3eXlV2nX265cwNTYH1EJGZT0IcGyY31WUDHiGmtnTY-NwZsy0R93irVhAzVhTlmZI_DSRQ"
57
//        //if (isValid("eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzYmEiLCJmdWxsbmFtZSI6InNvZmlhICIsInVzZXJJZCI6IjYiLCJlbWFpbCI6InNvZmllX21wbEBob3RtYWlsLmNvbSIsInJvbGUiOjEsImV4cCI6MTQ5Mjc3ODY2M30.LcgYcBuI0V8tsZZR_Pnnb5Kk0_GfblxNC6FH1CHT2q7u4j9hcETb1EYLIKPZdkErXJ_MSC1jHNUiS5qCzEQQ2w"))
58
//
59
//        if(isValid("eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJBcmdpcm8iLCJmdWxsbmFtZSI6IkFyZ2lybyBLb2tvZ2lhbmFraSIsInVzZXJJZCI6IjgiLCJlbWFpbCI6ImFyZ2lyb0BnbWFpbC5jb20iLCJyb2xlIjoyLCJleHAiOjE0OTI3ODY4MTl9.F-cFGmSvZLAF70PCz9PE6jOwSg6aAiUW2lklkS-eKCxkjwbqPJLWlNWP10Czg4j1_iKDTvHR7wbhbRyJPoqvNQ"))
60
//            System.out.println("Valid");
61
//        else
62
//            System.out.println("Not Valid");
63
//
64
//    }
65

    
66
}
    (1-1/1)