Dengan perkembangan pesat Internet, semakin banyak aplikasi perlu melaksanakan pengesahan dan kebenaran pengguna Sebagai salah satu rangka kerja kebenaran yang paling popular, OAuth2.0 digunakan secara meluas dalam aplikasi Web dan mudah alih. JWT (JSON Web Token) ialah piawaian pengesahan yang digunakan secara meluas yang membolehkan pembangun menghantar maklumat dengan selamat antara pelanggan dan pelayan. Sangat mudah untuk menggunakan JWT untuk melaksanakan pengesahan OAuth2.0 dalam projek Golang Di bawah kami akan memperkenalkan cara melaksanakannya.
Sebelum menggunakan JWT, anda perlu memasang perpustakaan jwt-go di bawah Golang. Gunakan arahan berikut untuk melengkapkan pemasangan.
go get github.com/dgrijalva/jwt-go
Sebelum memperkenalkan cara menggunakan JWT untuk melaksanakan pengesahan OAuth2.0, mari kita membiasakan diri dengan konsep asas dan prinsip kerja JWT. Sebagai kaedah pengesahan standard, JWT mempunyai ciri-ciri berikut:
Proses pengesahan JWT adalah seperti berikut:
Untuk menggunakan JWT bagi melaksanakan pengesahan OAuth2.0 dalam projek Golang, anda perlu melengkapkan langkah berikut:
Di bawah ini kami akan memperkenalkan cara untuk melaksanakannya.
3.1 Cipta token JWT
Apabila menjana token JWT pada bahagian pelayan, tiga parameter perlu ditetapkan: kunci, maklumat muatan (Tuntutan) dan masa tamat tempoh (ExpiresAt).
Gunakan kod berikut untuk mencipta token JWT:
import ( "github.com/dgrijalva/jwt-go" ) func CreateJWT() (string, error) { // 设置密钥 secret := []byte("secret") // 设置载荷信息 token := jwt.New(jwt.SigningMethodHS256) claims := token.Claims.(jwt.MapClaims) claims["authorized"] = true claims["user_id"] = 1 claims["exp"] = time.Now().Add(time.Minute * 30).Unix() // 创建JWT令牌 tokenString, err := token.SignedString(secret) if err != nil { return "", err } return tokenString, nil }
Dalam kod di atas, kami menetapkan kunci kepada "rahsia", dan maklumat muatan termasuk status kebenaran pengguna, ID pengguna dan tamat tempoh masa. Akhirnya buat token JWT menggunakan kaedah token.SignedString.
3.2 Sahkan token JWT
Apabila pelanggan menghantar permintaan, token JWT perlu disimpan secara setempat dan dihantar sebagai pengepala Kebenaran dalam setiap permintaan. Selepas menerima permintaan, pelayan perlu mengesahkan kesahihan token JWT.
Token JWT boleh disahkan menggunakan kod berikut:
import ( "github.com/dgrijalva/jwt-go" ) func VerifyJWT(tokenString string) (jwt.MapClaims, error) { // 设置密钥 secret := []byte("secret") // 解析JWT令牌 token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) } return secret, nil }) if err != nil { return nil, err } // 校验JWT令牌 if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid { return claims, nil } return nil, fmt.Errorf("invalid token") }
Dalam kod di atas, kami menetapkan rahsia kepada "rahsia", gunakan kaedah jwt.Parse untuk menghuraikan token JWT, dan gunakan token .Claims.(jwt.MapClaims) menukar maklumat muatan kepada jenis MapClaims. Akhir sekali, kami mengesahkan bahawa token JWT adalah sah.
Menggunakan JWT untuk melaksanakan pengesahan OAuth2.0 dalam projek Golang adalah sangat mudah Anda hanya perlu melengkapkan dua langkah di atas. Sebagai kaedah pengesahan standard, JWT mempunyai prestasi dan keselamatan merentas domain yang sangat baik. Ia boleh memberikan kami kaedah pengesahan yang cekap, selamat dan mudah, yang meningkatkan kecekapan pembangunan dan pengalaman pengguna.
Atas ialah kandungan terperinci Cara menggunakan JWT untuk melaksanakan pengesahan OAuth2.0 dalam projek Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!