2017-06-21 2 views
0

Ich habe REST API mit Spring Boot und Single Page Application powered by AngularJS erstellt.Wie kommuniziert man von AngularJS basierend Frontend zu REST API Backend sicher

Die Frage ist, wie man verhindern kann, dass jeder meine REST API benutzt, die öffentlich im Internet verfügbar ist? Ich möchte, dass es nur von meiner Webseite verwendet werden darf.

Ich kann kein Geheimnis/Passwort/Token von eckigen Seite verwenden, wie es für jedermann sichtbar wäre.

+1

Ich möchte nur helfen: [vielleicht dieser Link gibt Ihnen relevante Informationen] (https://stackoverflow.com/questions/24617452/only-allowing-certain-websites-access-php-api) –

Antwort

1

Federsicherheit kann dabei helfen. Sie können einige URLs definieren, auf die nur bestimmte Benutzer mit bestimmten Rollen zugreifen können.

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    protected void configures(HttpSecurity http) throws Exception { 

     http.exceptionHandling() 
      .accessDeniedPage("/error").and() 
      .authorizeRequests() 
      .antMatchers("/api/**").hasAnyRole("USER_ROLE"); 
    } 
} 

Damit nur diejenigen mit der Rolle "USER_ROLE" auf jede URL zugreifen können, beginnt mit "/ api". Um diese Funktionalität zu haben, müssen Sie ein Login-System implementieren, das den Benutzern nach erfolgreicher Anmeldung das "USER_ROLE" zuweist.

Am AngularJs Teil ist es ziemlich einfach. Sie führen lediglich eine HTTP-Anfrage an die REST-API, da der Browser Cookies und JSESSIONID enthält, wird er zusammen mit der Anfrage in der Kopfzeile gesendet. Spring hebt es auf und überprüft, ob der Benutzer mit dem JSESSIONID berechtigt ist, auf die URL zuzugreifen.

Verwandte Themen