繁体   English   中英

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

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

当我尝试在中间件中验证基于 Cognito 的 JWT 时,我收到“密钥类型无效”。 目前我在设置 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)

然后我的中间件看起来像这样,其中大部分来自 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})
    }
}

似乎您应该使用SigningKeys来验证具有孩子字段使用情况的令牌。 SigningKey用于自签名密钥。

请参阅 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