OAuth 2.0 adalah perjanjian lisensi tingkat industri. OAuth 2.0 diwarisi dari OAuth 1.0, yang dibuat pada tahun 2006. OAuth 2.0 berkomitmen untuk membantu pengembang menyederhanakan otorisasi dan menyediakan proses otorisasi khusus untuk aplikasi web, aplikasi desktop, aplikasi seluler, dan aplikasi tertanam.
OAuth 2.0 adalah protokol standar industri untuk otorisasi. OAuth 2.0 menggantikan pekerjaan yang dilakukan pada protokol OAuth asli yang dibuat pada tahun 2006. OAuth 2.0 berfokus pada kesederhanaan pengembang klien sambil memberikan aliran otorisasi khusus untuk aplikasi web, aplikasi desktop, ponsel, dan perangkat ruang tamu.
Empat karakter OAuth 2.0
Untuk pemahaman yang mudah, ambil login weChat yang umum digunakan sebagai contoh
Pemilik sumber daya
Pemilik Sumber Daya, informasi pribadi yang ditetapkan pada WeChat oleh setiap pengguna yang sesuai dengan WeChat adalah milik setiap pengguna dan bukan milik Tencent.
Server Sumber Daya
Server sumber daya umumnya adalah API istirahat untuk beberapa operasi data pengguna (penambahan, penghapusan, modifikasi dan pencarian), seperti antarmuka WeChat untuk mendapatkan informasi dasar pengguna.
Aplikasi klien
Klien pihak ketiga, dibandingkan dengan aplikasi yang dikembangkan oleh berbagai akun publik WeChat, aplikasi pihak ketiga dapat mengakses API REST dari server sumber daya setelah diizinkan oleh server otentikasi untuk mendapatkan informasi dasar seperti avatar pengguna, jenis kelamin, wilayah, dll.
Server otorisasi
Mengotentikasi server untuk memverifikasi apakah klien pihak ketiga legal. Jika legal, keluarkan token ke klien, dan pihak ketiga menggunakan token untuk memanggil API server sumber daya.
Empat metode otorisasi (tipe hibah)
anthorization_code
Jenis kode otorisasi, berlaku untuk aplikasi server web. Mode adalah: klien pertama panggilan/oAuth/otorize/untuk memasukkan antarmuka otorisasi pengguna, dan mengembalikan kode setelah otorisasi pengguna, dan klien kemudian memperoleh token akses sesuai dengan kode dan appsecret.
Implisit menyederhanakan jenis , dan ada lebih sedikit langkah untuk mendapatkan kode otorisasi daripada jenis kode otorisasi. Setelah aplikasi klien diizinkan, server otentikasi akan secara langsung menempatkan token akses pada URL klien. Klien mem -parsing URL untuk mendapatkan token. Metode ini sebenarnya tidak terlalu aman, dan Anda dapat menggunakan saluran aman HTTPS dan mempersingkat waktu validitas token akses untuk mengurangi risiko.
kata sandi
Jenis Kata Sandi, Aplikasi Klien Mendapat Akses Token Melalui Nama Pengguna dan Kata Sandi. Sangat cocok untuk server sumber daya, server otentikasi dan klien memiliki hubungan kepercayaan yang lengkap, karena pengguna ingin mengirim nama pengguna dan kata sandi pengguna langsung ke aplikasi klien. Aplikasi klien memperoleh token melalui nama pengguna dan kata sandi yang dikirim oleh pengguna, dan kemudian mengakses sumber daya server sumber daya. Misalnya, Alipay dapat masuk secara langsung dengan nama pengguna dan kata sandi Taobao karena mereka milik perusahaan yang sama dan mereka sepenuhnya saling percaya.
client_credentials
Jenis klien adalah cara yang tidak memerlukan partisipasi pengguna dan digunakan untuk berlabuh di antara berbagai layanan. Misalnya, aplikasi yang Anda kembangkan perlu menghubungi layanan penyedia layanan kode verifikasi SMS, hubungi layanan penyedia layanan peta, dan hubungi layanan Penyedia Layanan Push Pesan Ponsel. Ketika Anda perlu menghubungi Layanan, Anda dapat langsung menggunakan ID aplikasi dan aplikasi yang diberikan oleh penyedia layanan untuk mendapatkan token. Setelah Anda mendapatkan token, Anda dapat secara langsung menghubungi Layanan.
Konsep lain
menyelesaikan
Terkadang server sumber daya dan server otentikasi adalah dua aplikasi yang berbeda. Terkadang server sumber daya dan server otentikasi berada di aplikasi yang sama. Perbedaannya adalah apakah server sumber daya perlu memeriksa validitas token. Yang pertama perlu memeriksa, sementara yang terakhir tidak. Yang terakhir diimplementasikan di sini.
Konfigurasi Keamanan Aplikasi
@ConfigurationPublic Class SecurityConfiguration Memperluas WebSecurityConfigurerAdapter {@Override Protected Void Configure (httpsecurity http) melempar pengecualian {http.formlogin () .and (). } @Override public void configure (WebSecurity Web) melempar Exception {super.configure (web); } @Override Protected void configure (authenticationManagerBuilder auth) melempar Exception {auth.inMemoryAryuthentication (). WithUser ("lyt"). Kata sandi ("LYT"). Otoritas ("Role_user") .and (). WithUser ("Admin"). Kata Sandi ("") .ADIMIN ("). } @Bean @Override AuthenticationManager AuthenticationManagerBean () melempar Exception {return super.authenticationManagerBean (); }}Konfigurasi Server Otentikasi
@EnableAuthorizationserver @configurationpublic kelas otorisasiCerFiguration memperluas otorisasi serverFigurerAdapter {@Override public void configure (clientDetailsServiceConfigurer klien) lemparan pengecualian {klien. .AuthorizedGrantTypes ("Authorization_Code", "Password", "Implicit", "Client_Credentials");} @Override public void configure (otorisasiServersecurity Configurer Security) melempar Exception {super.configure (keamanan); } @Override public void configure (OtorisasiServerEndPointSconfigurer Endpoints) melempar Exception {endpoints.authenticationManager (authenticationManager); } @Autowired @qualifier ("AuthenticationManagerBean") Private AuthenticationManager AuthenticationManager;}Konfigurasi Server Sumber Daya
@EnableGlobalMethodSecurity (prapeStenabled = true)@enableResourceserver@configurationpubure class sumber daya serangga. .AntMatchers (httpmethod.get, "/read/**").access("#oAuth2.hasscope('read ')") .Antmatchers (httpmethod.post, "/write/**").access("#oAuth2.hasscope('write'); }}Pengaturan Pemesanan Filter Server Sumber Daya
Anda perlu mengatur filter-order ke 3 di application.yml. Silakan merujuk ke tautan untuk alasan tertentu.
Mencegah konflik kue
Untuk menghindari kesalahan antara cookie dari server otentikasi dan cookie antara klien dan cookie, yang terbaik adalah memodifikasi nama cookie atau mengatur ContextPath.
tes
Postman menyediakan metode otentikasi OAuth 2.0. Anda dapat memperoleh token dan menambahkan otentikasi ke permintaan HTTP, dan kemudian meminta API REST dari server sumber daya.
Informasi klien
Otorisasi
Token yang diperoleh
Mengakses API Server Sumber Daya
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.