第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 Go Fiber 中間件的 AWS Cognito JWT 驗(yàn)證(獲取“密鑰類型無效”)

使用 Go Fiber 中間件的 AWS Cognito JWT 驗(yàn)證(獲取“密鑰類型無效”)

Go
慕妹3146593 2023-02-14 14:54:31
當(dāng)我嘗試在我的中間件中驗(yàn)證基于 Cognito 的 JWT 時(shí),我收到“密鑰類型無效”。目前我在設(shè)置 Fiber 應(yīng)用程序時(shí)像這樣設(shè)置中間件:// read the "jwks.json" that I got from AWS locallysigningKey, err := ioutil.ReadFile("./jwks.json")if err != nil {    log.Fatal("Error when opening file: ", err)}// pass in the signing key when middle ware is createdapp.Get("/api", middleware.Protected(signingKey), handlers.ReadSomeData)然后我的中間件看起來像這樣,其中大部分來自 Go Fiber 的 JWT 示例存儲(chǔ)庫。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”參數(shù),但類型不匹配,所以我最終讀取了 jwks json 文件,如下所示:func Protected() func(*fiber.Ctx) error {    signingKey, err := os.ReadFile("./jwks.json")    if err != nil {    }    x := make(map[string]interface{})    json.Unmarshal(signingKey, &x)    return jwtware.New(jwtware.Config{        SigningKeys:   x,        ErrorHandler:  jwtError,        SigningMethod: "RS256",    })}但是現(xiàn)在我的錯(cuò)誤是“意外的 jwt 密鑰 id=XXXXXXXXXXXX”
查看完整描述

1 回答

?
狐的傳說

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

事實(shí)證明,如果您向 fiber 提供密鑰的 url,fiber 具有提取 jwks.json 數(shù)據(jù)的內(nèi)置功能??赡苓€有一種方法可以讓它加載本地文件,但是使用 AWS 密鑰您通常不會(huì)這樣做 - 密鑰可能會(huì)根據(jù)您所處的環(huán)境而改變 - 生產(chǎn)或測試。

您需要知道您的 AWS 用戶池區(qū)域和該用戶池的 ID。這通常在用戶池設(shè)置視圖中提供,但您可以根據(jù) AWS 文檔中提供的以下示例輕松想出它:

https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json

有關(guān)更多信息,請參閱:AWS:驗(yàn)證 JSON 網(wǎng)絡(luò)令牌

這是一個(gè)讓它與 AWS Cognito JWT url 一起工作的簡單示例:

 authMiddleware := jwtware.New(jwtware.Config{

        TokenLookup: "header:Authorization",

        AuthScheme:  "Bearer",

        KeySetURLs: []string{

            "https://cognito-idp.some-region-1.amazonaws.com/some-region-1_MYUserPoolId/.well-known/jwks.json",

        },

    })


    // Match any route

    app.Use(authMiddleware, func(c *fiber.Ctx) error {

        return c.SendString("?? Yay!")

    })


    log.Fatal(app.Listen(":3000"))

您現(xiàn)在應(yīng)該能夠使用這樣的請求對其進(jìn)行測試:


curl --location --request GET 'http://127.0.0.1:3000' \

--header 'Authorization: Bearer MyAWSJWTToken..'

或者使用任何 HTTP 客戶端(如 Postman)。您必須在 Authorization 標(biāo)頭中提供您的 JWT。


也可以看看:


查看完整回答
反對 回復(fù) 2023-02-14
  • 1 回答
  • 0 關(guān)注
  • 196 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號