简体   繁体   English

AWS Cognito JWT 验证使用 Go Fiber 中间件(获取“密钥类型无效”)

[英]AWS Cognito JWT verification using Go Fiber middleware (getting "key is of invalid type")

I am getting "key is of invalid type" when I try to verify a Cognito based JWT in my middleware.当我尝试在中间件中验证基于 Cognito 的 JWT 时,我收到“密钥类型无效”。 Currently I set up the middle ware like this when the Fiber app is being setup:目前我在设置 Fiber 应用程序时像这样设置中间件:

// read the "jwks.json" that I got from AWS locally
signingKey, err := ioutil.ReadFile("./jwks.json")
if err != nil {
    log.Fatal("Error when opening file: ", err)
}

// pass in the signing key when middle ware is created
app.Get("/api", middleware.Protected(signingKey), handlers.ReadSomeData)

Then my middleware looks like this where most of it is from Go Fiber's JWT example repo.然后我的中间件看起来像这样,其中大部分来自 Go Fiber 的 JWT 示例 repo。

func Protected(signingKey []byte) func(*fiber.Ctx) error {
    return jwtware.New(jwtware.Config{
        SigningKey:    signingKey,
        ErrorHandler:  jwtError,
        SigningMethod: "RS256",
    })
}

func jwtError(c *fiber.Ctx, err error) error {
    if err.Error() == "Missing or malformed JWT" {
        c.Status(fiber.StatusBadRequest)
        return c.JSON(fiber.Map{"status": "error", "message": err.Error(), "data": nil})

    } else {
        c.Status(fiber.StatusUnauthorized)
        return c.JSON(fiber.Map{"status": "error", "message": err.Error(), "data": nil})
    }
}

Seems like You should use SigningKeys for validating token with kid field usage.似乎您应该使用SigningKeys来验证具有孩子字段使用情况的令牌。 SigningKey is used for self-signed keys. SigningKey用于自签名密钥。

See fiber README.md in github.com/gofiber/jwt请参阅 github.com/gofiber/jwt 中的光纤README.md

func Protected(signingKey []byte) func(*fiber.Ctx) error {
    return jwtware.New(jwtware.Config{
        SigningKeys:    signingKey,
        ErrorHandler:  jwtError,
        SigningMethod: "RS256",
    })
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM