Using jwt-go
, you can do this
token, err := p.Parse(IDToken, func(*jwt.Token) (interface{}, error) {
return []byte(signingKey), nil
})
And it will verify the token against the key.
Quoting the documentation,
type Keyfunc func(*Token) (interface{}, error)
Parse methods use this callback function to supply the key for verification. The function receives the parsed, but unverified Token. This allows you to use properties in the Header of the token (such as
kid
) to identify which key to use.