Heim  >  Artikel  >  Java  >  Verwendung der JWT-Authentifizierung in der Java-API-Entwicklung

Verwendung der JWT-Authentifizierung in der Java-API-Entwicklung

王林
王林Original
2023-06-17 23:38:461678Durchsuche

Mit der weiten Verbreitung von Internetanwendungen sind Sicherheitsfragen nach und nach zu einem wichtigen Thema geworden. Um die Sicherheit von Anwendungen zu gewährleisten, müssen Entwickler verschiedene Maßnahmen ergreifen, um unbefugte Zugriffe und Angriffe zu verhindern. JWT (JSON Web Token) ist eine sichere Übertragungsmethode, die für Deklarationen in Webanwendungen verwendet wird.

Die Verwendung der JWT-Authentifizierung bei der Java-API-Entwicklung kann die Sicherheit der API effektiv schützen und die Zugriffskontrolle während des Entwicklungsprozesses erleichtern.

  1. Das Grundkonzept von JWT

JWT besteht aus drei Teilen, nämlich Header, Nutzlast und Signatur. Der Header wird verwendet, um den JWT-Typ und den verwendeten Algorithmus zu beschreiben, der normalerweise HMAC SHA256- oder RSA-Verschlüsselung verwendet. Die Nutzlast wird zum Speichern von JWT-bezogenen Informationen verwendet, im Allgemeinen einschließlich Benutzer-ID, Ablaufzeit usw. Die Signatur ist das Ergebnis der Verschlüsselung der ersten beiden Teile, um die Glaubwürdigkeit und Integrität von JWT sicherzustellen.

  1. Schritte zur Implementierung der JWT-Authentifizierung

Bevor Sie die JWT-Authentifizierung verwenden, müssen Sie die folgenden Schritte ausführen:

2.1 JWT generieren

Die Generierung von JWT erfordert die Verwendung von Verschlüsselungsmethoden wie HMAC SHA256 oder RSA. Informationen zur spezifischen Implementierung finden Sie im folgenden Code (nur als Referenz):

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 JWT überprüfen

Der Prozess der JWT-Verifizierung ist sehr einfach. Sie müssen nur die JWT analysieren und anhand der darin enthaltenen Informationen überprüfen . Im Allgemeinen muss die JWT-Überprüfung die folgenden Bedingungen erfüllen:

  • Überprüfen Sie die Signatur des JWT.
  • Überprüfen Sie die Ablaufzeit des JWT.
  • Überprüfen Sie, ob die in der Nutzlast des JWT enthaltenen Informationen korrekt sind.

Für eine bestimmte Implementierung Bitte beziehen Sie sich auf den folgenden Code (nur als Referenz):

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;
}
  1. JWT-Authentifizierung in der Java-API verwenden

Die Schritte zur Verwendung der JWT-Authentifizierung in der Java-API lauten wie folgt:

3.1 JWT erhalten

Nach dem Benutzer Nach erfolgreicher Anmeldung muss der Server das JWT an den Client zurücksenden. Der Client kann das JWT lokal speichern.

3.2 Senden Sie eine Anfrage

Wenn der Client eine Anfrage sendet, muss er das JWT mitbringen, das im Allgemeinen wie folgt im Anfrageheader enthalten sein kann:

Authorization: Bearer {token}

3.3 Überprüfen Sie das JWT

Der Server muss das überprüfen Gültigkeit des JWT nach Erhalt der Anfrage. Stellen Sie sicher, dass Benutzer nach der Authentifizierung darauf zugreifen. Wenn die JWT-Überprüfung fehlschlägt, wird die entsprechende Fehlermeldung zurückgegeben.

Informationen zur spezifischen Implementierung finden Sie im folgenden Code (nur als Referenz):

@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);
        }
    }
}
  1. Zusammenfassung

Die Verwendung der JWT-Authentifizierung in der Java-API-Entwicklung kann die Sicherheit der API gewährleisten und die Zugriffskontrolle für Entwickler erleichtern. Der Vorteil der Verwendung von JWT besteht darin, dass JWT eine einfache Struktur aufweist und einfach zu implementieren ist und gleichzeitig die Belastung des Servers verringert. Es ist jedoch zu beachten, dass JWT Wiederholungsangriffen ausgesetzt sein kann und bei der Implementierung entsprechende Maßnahmen ergriffen werden müssen, um diese Situation zu vermeiden.

Das obige ist der detaillierte Inhalt vonVerwendung der JWT-Authentifizierung in der Java-API-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn