Spring boot, deaktivieren Sie die Sicherheit für Tests

8

Ich benutze Springboot Version "1.3.0.M5" (ich habe auch Version "1.2.5.RELEASE" versucht). Ich fügte Frühlingssicherung hinzu:

%Vor%

und code:

%Vor%

und testen, dass ein Fehler auftritt, wenn / api / samplentity Zugriff hat: org.springframework.web.client.HttpClientErrorException: 403 Forbidden (...)

%Vor%

Wenn ich eine Anwendung von main () aus aufrufen und auf die URL zugreifen: Ссылка Ich werde zur Anmeldeseite weitergeleitet.

Wie kann ich meinen Test ausführen und die Sicherheit deaktivieren oder nur den Benutzer anmelden?

- meine Lösung: Sicherheit aus dem Test mit Profilen ausschließen:

%Vor%     
Hollow.Quincy 05.10.2015, 19:54
quelle

1 Antwort

2

Sie müssen einige Änderungen an Ihrer Konfiguration vornehmen und testen, um Ihre Probleme zu lösen.

Zuerst erkläre ich, warum Ihre Lösung nicht funktioniert:

  1. Die Spring RestTemplate -Klasse ist eine Möglichkeit, auf Ihren REST-Service zuzugreifen, aber es fehlen einige Header-Informationen, so wie sie aufgebaut sind (was nicht bedeutet, dass es unmöglich ist mit RestTemplate ). Deshalb funktionierte die Authentifizierung nicht.
  2. Mein erster Lösungsversuch funktioniert wegen der Verwendung der Klasse RestTemplate nicht, da die RestTemplate -Anforderung wahrscheinlich eine neue Sitzung erstellt. Es setzt eine völlig andere Umgebung. Mein Code funktioniert, wenn Sie mit der @PreAuthorize Annotation gesicherte Methoden testen möchten, aber nur, wenn Sie eine solche Methode direkt in Ihrem Test ausführen möchten und eine gültige Authentifizierung benötigen.
  3. Sie können keinen Benutzer gemäß Ihrer aktuellen Spring-Sicherheitskonfiguration automatisch autorisieren.

Zweitens, hier sind die notwendigen Änderungen an Ihrem Code:

Zuerst die Konfigurationsklasse

%Vor%

Ich musste httpBasic Authentication Unterstützung hinzufügen (um die Authentifizierung über http Header-Attribut zu aktivieren) und ich deaktiviert csrf Token (das letztere nur aus Gründen der Bequemlichkeit, sollten Sie sie je nach Kritikalität Ihrer Anwendung wieder aktivieren).

Und zweitens die Testklasse:

%Vor%

}

Ich habe den Frühling / Frühling-Sicherheits-Test-Ansatz hier verwendet.

Verwendete Versionen:

%Vor%

Wenn Sie Ihren Rest api testen möchten, kann ich Ihnen das Postman-Plugin für Chrome empfehlen. Da dies Ihnen helfen kann, das Problem viel schneller zu identifizieren.

Ich hoffe, das hilft Ihnen, Ihr Problem endlich zu lösen.

    
BeWu 06.10.2015 08:34
quelle