Rumah >pembangunan bahagian belakang >Golang >Laksanakan kaedah pengesahan OAuth2.0 dalam rangka kerja bahasa Go

Laksanakan kaedah pengesahan OAuth2.0 dalam rangka kerja bahasa Go

PHPz
PHPzasal
2023-06-04 23:31:362551semak imbas

Dengan pembangunan berterusan Internet dan aplikasi mudah alih, isu privasi dan keselamatan data pengguna semakin mendapat perhatian. Untuk melindungi privasi pengguna dan keselamatan data, penyedia perkhidmatan utama telah mula menggunakan kaedah pengesahan OAuth2.0. Kaedah pengesahan ini membolehkan pengguna membenarkan aplikasi pihak ketiga untuk mengakses sumber terhad mereka (seperti maklumat pengguna, foto, dll.) tanpa berkongsi bukti kelayakan mereka (seperti nama pengguna dan kata laluan). Artikel ini akan memperkenalkan anda kepada cara melaksanakan kaedah pengesahan OAuth2.0 dalam rangka kerja bahasa Go.

Ikhtisar kaedah pengesahan OAuth2.0

OAuth2.0 ialah rangka kerja pengesahan dan kebenaran popular yang telah digunakan secara meluas dalam banyak penyedia perkhidmatan (seperti Google, Facebook, GitHub, dll.) untuk membenarkan aplikasi pihak ketiga mengakses data pengguna dan sumber terhad. Proses pengesahan OAuth2.0 dibahagikan kepada empat langkah:

  • Langkah 1: Aplikasi pihak ketiga memulakan permintaan untuk kebenaran untuk mengakses sumber pengguna.
  • Langkah 2: Pengguna melakukan pengesahan identiti melalui antara muka kebenaran pembekal perkhidmatan dan mengesahkan bahawa aplikasi pihak ketiga diberi kuasa untuk mengakses sumber terhadnya.
  • Langkah 3: Pembekal perkhidmatan mengeluarkan token akses kepada aplikasi pihak ketiga.
  • Langkah 4: Aplikasi pihak ketiga menggunakan token akses untuk mengakses sumber terhad pembekal perkhidmatan.

Ini ialah proses yang selamat dan cekap yang memberikan pengguna perlindungan privasi dan keselamatan data yang lebih baik. Di bawah ini kami akan memperkenalkan cara untuk melaksanakan kaedah pengesahan OAuth2.0 dalam rangka kerja bahasa Go.

Pelaksanaan OAuth2.0 dalam rangka kerja bahasa Go

Bahasa Go ialah bahasa pengaturcaraan merentas platform yang pantas, cekap dan mudah dipelajari dan mempunyai sintaks yang ringkas. Bahasa Go juga mempunyai banyak rangka kerja yang popular (seperti Gin, Beego, Echo, dll.), yang sudah termasuk pelaksanaan OAuth2.0. Seterusnya kami akan melaksanakan OAuth2.0 untuk rangka kerja Gin.

Langkah pertama: Mohon bukti kelayakan untuk pengesahan OAuth2.0

Sebelum menggunakan OAuth2.0 untuk pengesahan, kami perlu memohon bukti kelayakan terlebih dahulu. Bukti kelayakan termasuk ID pelanggan dan rahsia pelanggan, yang merupakan bahagian penting dalam proses pengesahan OAuth2.0 Melalui bukti kelayakan, kami biasanya boleh mendapatkan token akses dan mengakses sumber terhad penyedia perkhidmatan.

Pembekal perkhidmatan yang berbeza mungkin mempunyai keperluan yang berbeza apabila memohon bukti kelayakan pengesahan OAuth2.0. Mengambil Google sebagai contoh, kita perlu mengambil langkah berikut:

  • Log masuk ke Konsol Pembangun Google.
  • Buat bukti kelayakan klien OAuth2.0 dan tetapkan URL ubah hala klien ke alamat setempat (seperti http://localhost:8080).
  • Dapatkan ID pelanggan dan rahsia pelanggan dalam bukti kelayakan pelanggan.

Langkah 2: Tambahkan OAuth2.0 dalam rangka kerja Gin

Untuk menambah pengesahan OAuth2.0 dalam rangka kerja Gin, kita perlu memasang gin-oauth2 terlebih dahulu. Pustaka ini menyediakan kaedah pelaksanaan OAuth2.0 bagi rangka kerja Gin. Pasang menggunakan arahan berikut:

pergi dapatkan -u github.com/gin-contrib/oauth2

Selepas melengkapkan pemasangan, kita perlu menambah kod permulaan dalam fail main.go sebagai ditunjukkan di bawah:

pakej utama

import (

"github.com/gin-gonic/gin"
"github.com/gin-contrib/oauth2"

)

func main() {

router := gin.Default()

// configure OAuth2.0
auth := oauth2.New(oauth2.Options{
    ClientID:     "your-client-id",
    ClientSecret: "your-client-secret",
    RedirectURL:  "http://localhost:8080/oauth2callback",
    Endpoint:     GoogleOAuth2.Endpoint,
    Scopes:       []string{"openid", "email", "profile"},
})

// register OAuth2.0 middleware
router.Use(auth)

// add OAuth2.0 routes
router.GET("/login", oauth2.LoginHandler)
router.GET("/logout", oauth2.LogoutHandler)
router.GET("/oauth2callback", oauth2.CallbackHandler)

router.Run(":8080")

}

dalam Dalam kod di atas, kami menyediakan maklumat yang diperlukan untuk OAuth2.0, termasuk ID pelanggan, rahsia pelanggan, URL ubah hala dan skop. Kemudian, kami mendaftarkan perisian tengah OAuth2.0 dan menambah tiga laluan: log masuk, log keluar dan panggil balik.

  • Laluan log masuk (/log masuk) akan melompat ke halaman log masuk kebenaran OAuth2.0.
  • Laluan log keluar (/log keluar) akan log keluar pengguna dan kembali ke halaman utama.
  • Laluan panggil balik (/oauth2callback) akan mengendalikan permintaan panggil balik token OAuth2.0 dan menukarnya menjadi token.

Langkah 3: Lindungi sumber aplikasi

Dengan menambahkan perisian tengah OAuth2.0, kami boleh melindungi sumber aplikasi. Hanya pengguna yang dibenarkan boleh mengakses sumber terhad. Berikut ialah contoh cara untuk melindungi sumber:

router.GET("/private", oauth2.LoginRequired(), func(c *gin.Context) {

user := oauth2.LoginUser(c)
c.JSON(http.StatusOK, gin.H{"user": user})

})

Dalam kod di atas, kami mentakrifkan laluan yang dilindungi (/peribadi) dengan perisian tengah LoginRequired() ditentukan. Ini akan mengesahkan token OAuth2.0 pengguna yang mengakses dan memastikan pengguna telah dibenarkan. Jika pengguna tidak dibenarkan, pengguna akan dialihkan ke halaman log masuk. Apabila pengguna diberi kuasa, kami boleh menggunakan fungsi LoginUser() untuk mendapatkan maklumat pengguna dan menghantarnya kepada klien.

Kesimpulan

Pengesahan OAuth2.0 ialah rangka kerja pengesahan dan kebenaran popular yang telah digunakan secara meluas oleh pelbagai penyedia perkhidmatan. Menggunakan kaedah pengesahan OAuth2.0 boleh mencapai perlindungan privasi dan keselamatan data yang lebih baik. Banyak perpustakaan OAuth2.0 telah dilaksanakan dalam rangka kerja bahasa Go, antaranya gin-oauth2 ialah perpustakaan popular yang boleh menambahkan pengesahan OAuth2.0 dengan mudah pada rangka kerja Gin. Apabila melindungi sumber aplikasi, cuma tambah perisian tengah LoginRequired(). Kaedah pengesahan OAuth2.0 telah diterima pakai secara meluas dan telah terbukti sebagai kaedah yang berkuasa, selamat dan berskala.

Atas ialah kandungan terperinci Laksanakan kaedah pengesahan OAuth2.0 dalam rangka kerja bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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