Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menghuraikan dan Mengesahkan Token JWT AWS Cognito dengan Mudah dalam Go?

Bagaimana untuk Menghuraikan dan Mengesahkan Token JWT AWS Cognito dengan Mudah dalam Go?

Barbara Streisand
Lepaskan: 2024-12-28 08:33:11
asal
337 orang telah melayarinya

How to Easily Parse and Verify AWS Cognito JWT Tokens in Go?

Menghuraikan dan Mengesahkan Token JWT daripada AWS Cognito dalam Go

Cabaran

Mengesahkan dan mengekstrak maklumat daripada token JWT yang dikeluarkan oleh AWS Cognito boleh menjadi tugas yang sukar kerana kekurangan pakej Go yang sesuai. Walaupun menggunakan perpustakaan yang biasa tersedia, prosesnya tetap kompleks. Artikel ini bertujuan untuk memudahkan tugas ini dengan menyediakan penyelesaian langkah demi langkah menggunakan perpustakaan yang sesuai.

Kunci Pengesahan: Kunci Awam

Untuk mengesahkan token JWT , kunci awam yang sepadan adalah penting. Kekunci ini boleh diperolehi daripada URL JWK (JSON Web Key) yang disediakan oleh AWS Cognito:

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

Parsing Keys and Verifying Token

Pendekatan yang disyorkan adalah untuk gunakan perpustakaan jwk dan jwt-go secara serentak. jwx memudahkan menghuraikan kunci awam daripada URL JWK, manakala jwt-go membantu dalam mengendalikan token JWT:

// Parse public keys
keySet, err := jwk.Fetch(THE_COGNITO_URL_DESCRIBED_ABOVE)

// Verify JWT token
token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
    // Check signing method
    if _, ok := token.Method.(*jwt.SigningMethodRS256); !ok {
        return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"])
    }

    // Extract key ID ("kid") from JWT header
    kid, ok := token.Header["kid"].(string)
    if !ok {
        return nil, errors.New("kid header not found")
    }

    // Find the public key
    keys := keySet.LookupKeyID(kid)
    if !ok {
        return nil, fmt.Errorf("key with specified kid is not present in jwks")
    }

    // Parse public key
    var publickey interface{}
    err = keys.Raw(&publickey)
    if err != nil {
        return nil, fmt.Errorf("could not parse pubkey")
    }

    return publickey, nil
Salin selepas log masuk

Kesederhanaan Diperolehi Semula dalam Go

Dengan memanfaatkan jwx dan perpustakaan jwt-go, proses mengesahkan dan menghurai token JWT yang dikeluarkan oleh AWS Cognito menjadi dipermudahkan dengan ketara. Pendekatan ini menawarkan penyelesaian yang jelas dan ringkas untuk pengesahan dan kebenaran dalam Go.

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan dan Mengesahkan Token JWT AWS Cognito dengan Mudah dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan