Sobes.tech
Senior

Kaip elgtis, kai vartotojas gauna tokeną, pakeičia jo vaidmenį ir su pakeistu tokenu ateina į paslaugą?

sobes.tech AI

Atsakymas iš AI

Jei naudotojas gauna žetoną ir pakeičia jame rolę, tai reiškia, kad žetonas nėra tinkamai apsaugotas. Norint tai išspręsti, naudojamas skaitmeninis žetono parašas (pavyzdžiui, JWT su HMAC arba RSA parašu). Priimant žetoną, paslauga patikrina parašą: jei žetonas buvo pakeistas, parašas nesutaps ir žetonas bus atmestas.

Pavyzdys, kaip patikrinti JWT Go kalba naudojant biblioteką github.com/dgrijalva/jwt-go:

import (
    "fmt"
    "github.com/dgrijalva/jwt-go"
)

func validateToken(tokenString string, secret []byte) (*jwt.Token, error) {
    token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
        if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
            return nil, fmt.Errorf("nenumatytas parašo metodas")
        }
        return secret, nil
    })
    if err != nil {
        return nil, err
    }
    if !token.Valid {
        return nil, fmt.Errorf("netinkamas žetonas")
    }
    return token, nil
}

Šiuo būdu, bet kokie pakeitimai žetono turinyje be teisingo parašo bus laikomi negaliojančiais.