2017-06-21 21 views
0

AngularJSによって強化されたSpring BootとSingle Page ApplicationでREST APIを作成しました。AngularJSベースのフロントエンドからREST APIバックエンドまで安全に通信する方法

インターネットで公開されているREST APIを誰もが使用しないようにするにはどうすればよいですか?私はそれが私のウェブページからの使用のためだけに許可されることを望みます。

誰かに見えるように、角面からの秘密/パスワード/トークンを使用することはできません。

+1

私はちょうど助けたいと思う:[多分このリンクはあなたに関連情報を与える](https://stackoverflow.com/questions/24617452/only-allowing-certain-websites-access-php-api) –

答えて

1

春のセキュリティがそれを助けることができます。特定の役割を持つ特定のユーザーだけがアクセスできるURLを定義できます。

@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"); 
    } 
} 

「USER_ROLE」というロールを持つユーザーのみが「/ api」で始まるURLにアクセスできるようになります。 この機能を使用するには、ログインに成功した後にユーザーに "USER_ROLE"を割り当てるログインシステムを実装する必要があります。

AngularJsの部分では、非常に簡単です。ブラウザはCookieとJSESSIONIDを保持しているので、REST APIへのHTTPリクエストを作成するだけで、ヘッダ内のリクエストとともに送信されます。 Springはそれをピックアップして、そのJSESSIONIDを持つユーザーがurlにアクセスする権限を持っているかどうかをチェックします。

関連する問題