Dengan penggunaan aplikasi Internet yang meluas, isu keselamatan secara beransur-ansur menjadi topik penting. Untuk memastikan keselamatan aplikasi, pembangun perlu mengambil pelbagai langkah untuk menghalang capaian dan serangan yang tidak dibenarkan. JWT (JSON Web Token) ialah kaedah penghantaran selamat yang digunakan untuk pengisytiharan dalam aplikasi web.
Menggunakan pengesahan JWT dalam pembangunan API Java boleh melindungi keselamatan API dengan berkesan dan memudahkan kawalan akses semasa proses pembangunan.
JWT terdiri daripada tiga bahagian iaitu Header, Payload dan Signature. Pengepala digunakan untuk menerangkan jenis JWT dan algoritma yang digunakan, biasanya menggunakan penyulitan HMAC SHA256 atau RSA. Muatan digunakan untuk menyimpan maklumat berkaitan JWT, secara amnya termasuk ID pengguna, masa tamat tempoh, dsb. Tandatangan adalah hasil penyulitan dua bahagian pertama untuk memastikan kredibiliti dan integriti JWT.
Sebelum menggunakan pengesahan JWT, anda perlu melakukan langkah berikut:
2.1 Jana JWT
Menjana JWT memerlukan penggunaan kaedah penyulitan seperti HMAC SHA256 atau RSA. Untuk pelaksanaan khusus, sila rujuk kod berikut (untuk rujukan sahaja):
public String generateToken(User user){ String token = null; try { String key = "12898faaca29bde369e281e99193eab4d8"; Algorithm algorithm = Algorithm.HMAC256(key); token = JWT.create() .withClaim("userId", user.getUserId()) .withExpiresAt(new Date(System.currentTimeMillis()+60*60*1000)) .sign(algorithm); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return token; }
2.2 Mengesahkan JWT
Proses pengesahan JWT adalah sangat mudah Anda hanya perlu menghuraikan JWT dan mengesahkan ia berdasarkan maklumat yang dibawa di dalamnya. Secara amnya, pengesahan JWT perlu memenuhi syarat berikut:
Untuk pelaksanaan khusus, sila rujuk kod berikut (untuk rujukan sahaja):
public boolean verifyToken(String token){ boolean flag=false; try { String key = "12898faaca29bde369e281e99193eab4d8"; Algorithm algorithm = Algorithm.HMAC256(key); JWTVerifier verifier = JWT.require(algorithm) .build(); DecodedJWT jwt = verifier.verify(token); String userId=jwt.getClaim("userId").asString(); Date expiresAt=jwt.getExpiresAt(); flag=true; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } return flag; }
Dalam Langkah-langkah untuk menggunakan pengesahan JWT dalam Java API adalah seperti berikut:
3.1 Dapatkan JWT
Selepas pengguna berjaya log masuk, pelayan perlu mengembalikan JWT kepada pelanggan, dan pelanggan boleh menyimpan JWT secara tempatan.
3.2 Hantar permintaan
Apabila pelanggan menghantar permintaan, ia perlu membawa JWT, yang biasanya boleh dibawa dalam pengepala permintaan, seperti berikut:
Authorization: Bearer {token}
3.3 Sahkan JWT
Selepas menerima permintaan, pelayan perlu mengesahkan kesahihan JWT untuk memastikan pengguna mengakses selepas disahkan. Jika pengesahan JWT gagal, mesej ralat yang sepadan dikembalikan.
Untuk pelaksanaan khusus, sila rujuk kod berikut (untuk rujukan sahaja):
@RestController public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/login", method = RequestMethod.POST) public ResponseEntity<String> login(@RequestBody User user) { User userExists = userService.validateUser(user); if (userExists != null) { String token = generateToken(userExists); return new ResponseEntity<String>(token, HttpStatus.OK); } else { return new ResponseEntity<String>("User not found!", HttpStatus.UNAUTHORIZED); } } @RequestMapping(value = "/users", method = RequestMethod.GET) public ResponseEntity<List<User>> getUsers(@RequestHeader("Authorization") String token) { if (verifyToken(token)) { List<User> users = userService.getUsers(); return new ResponseEntity<List<User>>(users, HttpStatus.OK); } else { return new ResponseEntity<List<User>>(HttpStatus.UNAUTHORIZED); } } }
Menggunakan pengesahan JWT dalam pembangunan API Java boleh memastikan keselamatan API dan kawalan akses yang mudah untuk pembangun. Kelebihan menggunakan JWT ialah JWT mempunyai struktur yang ringkas dan mudah untuk dilaksanakan, di samping mengurangkan beban pada pelayan. Walau bagaimanapun, perlu diambil perhatian bahawa JWT mungkin tertakluk kepada serangan ulang tayang, dan langkah-langkah yang sepadan perlu diambil dalam pelaksanaan untuk mengelakkan situasi ini.
Atas ialah kandungan terperinci Menggunakan pengesahan JWT dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!