Skip to content
Snippets Groups Projects
Select Git revision
  • 04816161239eb5bfa238d44ab60ecd75e0cf4292
  • main default protected
  • 1.8.5
  • 1.8.4
  • 1.8.3
  • 1.8.2
  • 1.8.1
  • 1.8.0
  • 1.7.14
  • 1.7.13
  • 1.7.12
  • 1.7.11
  • 1.7.10
  • 1.7.9
  • 1.7.8
  • 1.7.7
  • 1.7.6
  • 1.7.5
  • 1.7.4
  • 1.7.3
  • 1.7.2
  • 1.7.1
22 results

IamSigningKeyResolver.java

Blame
  • IamSigningKeyResolver.java 4.15 KiB
    
    // 1. HTTPS
    import java.net.URL;
    import java.io.*;
    import javax.net.ssl.HttpsURLConnection;
    
    // 2. json deser
    //import org.codehaus.jackson.map.ObjectMapper;
    import com.fasterxml.jackson.annotation.JsonProperty;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.node.ArrayNode;
    import com.fasterxml.jackson.databind.node.JsonNodeFactory;
    import com.fasterxml.jackson.databind.node.ObjectNode;
    import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    import com.fasterxml.jackson.annotation.JsonAutoDetect;
    
    
    // 3, extract PublicKey
    import java.util.Base64;
    import java.io.ByteArrayInputStream;
    import java.security.GeneralSecurityException; 
    import java.security.PublicKey; 
    import java.security.Signature; 
    import java.security.cert.CertificateFactory; 
    import java.security.cert.X509Certificate; 
    
    // 4, validate token
    import java.security.spec.InvalidKeySpecException;
    import java.security.NoSuchAlgorithmException;
    import java.security.Key;
    import java.security.PublicKey;
    import java.security.interfaces.RSAPublicKey;
    import io.jsonwebtoken.Header;
    import io.jsonwebtoken.Claims;
    import io.jsonwebtoken.Jwt;
    import io.jsonwebtoken.Jws;
    import io.jsonwebtoken.JwsHeader;
    import io.jsonwebtoken.Jwts;
    //import io.jsonwebtoken.jackson.io.JacksonDeserializer;
    import io.jsonwebtoken.SigningKeyResolverAdapter;
    import io.jsonwebtoken.security.Jwk;
    import io.jsonwebtoken.security.Jwks;
    // only dbg: when keys taken from file, not URL
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    import java.util.logging.Logger;
    
    public class IamSigningKeyResolver extends SigningKeyResolverAdapter
    {
       private static final Logger LOGGER = Logger.getLogger(IamSigningKeyResolver.class.getName());
       private String keysURL;
    
    
       public IamSigningKeyResolver(String keysUrl) {this.keysURL = keysUrl;}
    
       @Override
       public Key resolveSigningKey(JwsHeader jwsHeader, Claims claims)
       {
          LOGGER.fine( "trace" );
    
          //inspect the header or claims, lookup and return the signing key
    
          String keyId = jwsHeader.getKeyId(); //or any other field that you need to inspect
    
          Key key = null;
          try
          {