Я настраиваю промежуточное ПО безопасности в GoLang API, и мне кажется, что все настроено правильно, но я получаю сообщение об ошибке «ключ неверного типа».
Я подтвердил, что мой алгоритм подписи - RS256, а параметры промежуточного программного обеспечения настроены @ SigningMethod: jwt.SigningMethodRS256
У меня есть действующий токен ... все остальное в промежуточном программном обеспечении проходит.
Точкой входа в эту ошибку в промежуточном программном обеспечении является метод jwt.ParseRSAPrivateKeyFromPEM.
Я изолировал ошибку внутри пакета github.com/dgrijalva/jwt-go/rsa.go Verify () в строке: 62 - это тип ErrInvalidKeyType, который выдается. Все параметры до этого момента кажутся надежными и подходящими (например, m | signatureString | signature | key), но этот ключ. (* Rsa.PublicKey) не работает… в моем отладчике (GoLand) я проверяю * rsa и получаю ответ 'не удалось найти значение символа для rsa'…
if rsaKey, ok = key.(*rsa.PublicKey); !ok {
return ErrInvalidKeyType
}
обратите внимание ... если это еще не слишком очевидно ... я новичок в GoLang
----- ОБНОВИТЬ -----
Таким образом, на самом детальном уровне паника начинается с go / 1.12.8 / libexec / src / crypto / rsa / rsa.go: 49 с
func (pub *PublicKey) Size() int {
log.Printf("SIZE ::: %v :: %v",pub.N.BitLen(), pub.N)
return (pub.N.BitLen() + 7) / 8
}
Паб рассматривается как разыменование нулевого указателя. Я прослеживаю его до мультиплексора ->
крипто / rsa.VerifyPKCS1v15 (...) /usr/local/Cellar/go/1.12.8/libexec/src/crypto/rsa/pkcs1v15.go:275
github.com/dgrijalva/jwt-go. (* SigningMethodRSA) .Verify (...) /Users/me/Sandbox/src/github.com/dgrijalva/jwt-go/rsa.go:73
github.com/dgrijalva/jwt-go. (* Парсер) .ParseWithClaims (...) /Users/me/Sandbox/src/github.com/dgrijalva/jwt-go/parser.go:77
github.com/dgrijalva/jwt-go. (* Парсер) .Parse (...) /Users/btschirhart/Sandbox/src/github.com/dgrijalva/jwt-go/parser.go:20
github.com/dgrijalva/jwt-go.Parse (...) /Users/me/Sandbox/src/github.com/dgrijalva/jwt-go/token.go:89
github.com/auth0/go-jwt-middleware. (* JWTMiddleware) .CheckJWT (...) /Users/me/Sandbox/src/github.com/auth0/go-jwt-middleware/jwtmiddleware.go:203
github.com/auth0/go-jwt-middleware. (* JWTMiddleware) .Handler.func1 (...) /Users/me/Sandbox/src/github.com/auth0/go-jwt-middleware/jwtmiddleware.go: 110
сеть / http.HandlerFunc.ServeHTTP (...) /usr/local/Cellar/go/1.12.8/libexec/src/net/http/server.go:1995
github.com/gorilla/mux. (* Маршрутизатор) .ServeHTTP (...) /Users/me/Sandbox/src/github.com/gorilla/mux/mux.go:210 + 0xe3