如何从JWK转到访问我的IDP在Go中提供的令牌中的声明?

I'm having a lot of trouble going from a well-known.json url to getting the claims and using them internally.

My biggest issue right now is parsing the JWK from a well-known json string to a public key to verify my tokens with.

import (
    "fmt"

    "github.com/dgrijalva/jwt-go"
    "github.com/lestrrat-go/jwx/jwk"
)

func main() {
    // I have a JWK that contains a key encoded using RS256  
    set, _ := jwk.ParseString(jwkString)

    // This doesn't return a public key
    // Is this the right way to get a public key back from the string?
    publicKey, _ := set.Keys[0].Materialize()

    token, _ := jwt.Parse("<token string>", func(*jwt.Token) (interface{}, error) {
        return []byte(publicKey), nil
    })

    // Do I have to manually cast the claims to typed variables for use?
    email := fmt.Sprint(token.Claims.(jwt.MapClaims)["email"])

fmt.Println("email " + email) }