use of org.springframework.security.oauth2.common.exceptions.InvalidTokenException in project spring-security-oauth by spring-projects.
the class JwtHeaderConverter method convert.
/**
* Converts the supplied JSON Web Token to a <code>Map</code> of JWT Header Parameters.
*
* @param token the JSON Web Token
* @return a <code>Map</code> of JWT Header Parameters
* @throws JwkException if the JWT is invalid
*/
@Override
public Map<String, String> convert(String token) {
Map<String, String> headers;
int headerEndIndex = token.indexOf('.');
if (headerEndIndex == -1) {
throw new InvalidTokenException("Invalid JWT. Missing JOSE Header.");
}
byte[] decodedHeader = Codecs.b64UrlDecode(token.substring(0, headerEndIndex));
JsonParser parser = null;
try {
parser = this.factory.createParser(decodedHeader);
headers = new HashMap<String, String>();
if (parser.nextToken() == JsonToken.START_OBJECT) {
while (parser.nextToken() == JsonToken.FIELD_NAME) {
String headerName = parser.getCurrentName();
parser.nextToken();
String headerValue = parser.getValueAsString();
headers.put(headerName, headerValue);
}
}
} catch (IOException ex) {
throw new InvalidTokenException("An I/O error occurred while reading the JWT: " + ex.getMessage(), ex);
} finally {
try {
if (parser != null)
parser.close();
} catch (IOException ex) {
}
}
return headers;
}
Aggregations