Я хочу проверить веб-токен JSON. Веб-ключ JSON для проверки доступен по этот URL-адрес. Это JWK с сертификатами x509 (x5c). Основываясь на ответе на другой вопрос, попробовал следующее:
import "github.com/dgrijalva/jwt-go"
import "github.com/lestrrat-go/jwx/jwk"
func verifyToken(tokenBytes []byte) {
token, err := jwt.Parse(string(tokenBytes), getKey)
if err != nil {
panic(err)
}
}
func getKey(token *jwt.Token) (interface{}, error) {
set, err := jwk.Fetch(context.Background(), "https://shareduks.uks.attest.azure.net/certs")
if err != nil {
return nil, err
}
keyID, ok := token.Header["kid"].(string)
if !ok {
return nil, err
}
key, ok := set.LookupKeyID(keyID)
if !ok {
return nil, errors.New("could not find key with kid")
}
return key, nil
}
Но я получаю следующую ошибку
panic: failed to parse JWK set: failed to unmarshal JWK set: failed to unmarshal key #1 (total 5) from multi-key JWK set: failed to unmarshal JSON into key (*jwk.rsaPublicKey): required field e is missing
Я не смог найти пример, использующий x5c. Решение не обязательно должно использовать библиотеку, которую я использовал в своем примере. Спасибо!