2017-07-28 2 views
-1

Ich habe Feder-Web-Anwendung mit Feder-Sicherheit und ich benutze Rest-Dienste für den Zugriff auf Daten. Ich habe zwei Fragen dazu.So machen Sie Feder Sicherheit erlauben Nutzung von Rest-Dienstleistungen

Erstens kann ich nicht Frühling Sicherheit machen, um mir zu ermöglichen, POST HTTP-Anfrage zu senden und etwas zur Datenbank hinzuzufügen. Ich habe versucht, diese Anfrage zuzulassen, aber die Sicherheit im Frühling verweigert den Zugang.

http.authorizeRequests().antMatchers("/services/rest/registerUser").permitAll(); 

Zweite Frage, was ist die beste Praxis mit Sicherung Restleistungen? Ich möchte definitiv nicht, dass jemand Daten durch Restdienste an die Datenbank sendet. Also, was ist der beste Weg, um die Nutzung von Diensten aus meiner App zu erlauben und jede andere Ruheanforderung einzuschränken?

+1

Sie müssen den anonymen Zugriff aktivieren, damit "allowAll" funktioniert. Ohne sie haben Sie kein Authentifizierungsobjekt und der Zugriff schlägt immer noch fehl. Sie können alles ignorieren, aber auf diese Weise verlieren Sie auch die Sicherheits-Header, die bei einer Anfrage gesetzt werden. –

Antwort

0

Sie können die überladene Methode configure(WebSecurity web) in WebSecurityConfigurerAdapter mit der folgenden Implementierung verwenden;

public void configure(WebSecurity web) { 
    web.ignoring().antMatchers("/services/rest/registerUser"); 
} 

Außerdem, wenn Sie den Zugriff auf Ihre REST-API von einem Host andere als Host ermöglichen, wo Ihre REST Api platziert wird, dann müssen Sie Cors Headers verwenden.

Die am weitesten verbreitete und sichere Methode zum Schutz von REST Apis ist die Verwendung von OAuth2. Sie können das Spring Security OAuth2-Projekt verwenden, um dies zu erreichen.

Eine andere Möglichkeit ist die Verwendung von JWT-Tokens, die auch mit Spring Security und ein wenig Code erreicht werden können.

+0

Vielen Dank für die Informationen. Und ich bin nur neugierig, Ignorieren Web-Anfrage hat funktioniert, aber haben Sie eine Ahnung, warum mein Code mit 'PermitAll()' nicht erlaubt mir diese Anfrage zu posten? – wdc

Verwandte Themen