Heim > Java > javaLernprogramm > Testen der Spring Security-Authentifizierung mit JUnit

Testen der Spring Security-Authentifizierung mit JUnit

王林
Freigeben: 2023-09-10 10:01:05
nach vorne
674 Leute haben es durchsucht

使用JUnit测试Spring Security身份验证

Einführung

Spring Security ist ein hochgradig anpassbares Authentifizierungs- und Zugriffskontroll-Framework für Java-Anwendungen, insbesondere Spring-basierte Anwendungen. Das Testen dieser Sicherheitsmaßnahmen ist für die Gewährleistung der Sicherheit Ihrer Anwendung von entscheidender Bedeutung. In diesem Artikel untersuchen wir, wie man Spring Security mit JUnit, dem führenden Unit-Testing-Framework in Java, effektiv testet.

Spring Security und JUnit verstehen

Spring Security ist ein leistungsstarkes Framework, das Authentifizierung, Autorisierung und andere Sicherheitsfunktionen für Anwendungen auf Unternehmensebene bereitstellt. Es ist sowohl umfassend als auch flexibel und eignet sich für eine Vielzahl von Sicherheitsanforderungen.

JUnit ist ein einfaches Open-Source-Framework zum Schreiben wiederholbarer Tests in Java. Es bietet Anmerkungen zur Identifizierung von Testmethoden und Behauptungen zur Überprüfung der Ergebnisse dieser Tests.

Spring-Sicherheit mit JUnit testen

Richten Sie die Testumgebung ein

Um Spring Security mit JUnit zu testen, müssen wir zunächst die erforderlichen Abhängigkeiten zur Maven- oder Gradle-Build-Datei hinzufügen. Für Maven werden wir -

einschließen
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
Nach dem Login kopieren

Testfälle für Spring Security schreiben

Jetzt beginnen wir mit dem Schreiben unserer Testfälle. Nehmen wir an, wir haben einen REST-API-Endpunkt („/api/data“), auf den nur authentifizierte Benutzer zugreifen können. Wir können einen JUnit-Test schreiben, um dies zu überprüfen −

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@SpringBootTest
@AutoConfigureMockMvc
public class WebSecurityTest {

   @Autowired
   private MockMvc mockMvc;

   @Test
   public void shouldReturnUnauthorizedForUnauthenticatedUsers() throws Exception {
      mockMvc.perform(get("/api/data"))
         .andExpect(status().isUnauthorized());
   }
}
Nach dem Login kopieren

In diesem Test verwenden wir MockMvc, um eine GET-Anfrage an „/api/data“ durchzuführen. Da der Benutzer nicht authentifiziert ist, erwarten wir einen HTTP-Statuscode von 401 (Nicht autorisiert).

Authentifizierungszugriff testen

Wenn wir den Endpunkt für einen authentifizierten Benutzer testen möchten, stellt Spring Security Test die Annotation @WithMockUser bereit, um diesen Zweck zu erreichen –

import org.springframework.security.test.context.support.WithMockUser;

@Test
@WithMockUser
public void shouldReturnOkForAuthenticatedUsers() throws Exception {
   mockMvc.perform(get("/api/data")).andExpect(status().isOk());
}
Nach dem Login kopieren

In diesem Test richtet @WithMockUser einen Scheinbenutzer ein, um Anfragen „authentifiziert“ zu machen. Wir erwarten dann einen HTTP-Status von 200 (OK).

Fazit

Das Testen von Spring Security mit JUnit ist ein entscheidender Schritt, um sicherzustellen, dass die Sicherheitsmaßnahmen Ihrer Anwendung wie erwartet funktionieren. Mit der richtigen Einrichtung und dem richtigen Verständnis beider Frameworks können Sie effektive Tests schreiben und die Robustheit Ihrer Sicherheitsimplementierung verbessern.

Das obige ist der detaillierte Inhalt vonTesten der Spring Security-Authentifizierung mit JUnit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage