2017-05-05 20 views
0

APIクライアントにはユーザー名とパスワードがあります。Spring REST APIのセキュリティを提供する方法は?

ポストマンクライアントでは、基本認証を選択し、ユーザー名とパスワードを入力します。サーバの郵便局へのリクエストがBASIC AUTH TOKENをサーバに送信すると、

サーバー側では、ユーザー名とパスワードを含む表が1つしかありません。私たちはクライアントのための役割を維持しておらず、そのため私たちは1つのテーブルしか持っていません。今、BASIC AUTH TOKENを使用してユーザー名とパスワードを解決する方法。また、DATABASEに保存されているユーザー名とパスワードと比較する方法を解明しました。

私は初心者であり、非常に長い間これを実装するために苦労しています。 助けてください。

+0

あなたは私たちのためのセキュリティを提供する春のセキュリティフレームワークのために行く。 –

+1

このコンセプトのチュートリアルが見つかりました。しかし、それはすべてロールベースの認証です。 –

+0

はいロールベースの認証です。 –

答えて

0

Springセキュリティを使用してみてください。それは簡単で堅牢です。 WebSecurityConfigAdapterを作成するだけで、アプリケーションのhttp基本セキュリティを有効にできます。 https://docs.spring.io/spring-security/site/docs/current/reference/html/jc.html#jc-httpsecurity

Spring Securityを使いたくない場合は、カスタム実装を記述できます。 Http Basic Authトークンは、コロンで区切られたbase64でエンコードされた形式のユーザー名とパスワードです。例えば、usernameとpasswordはbase64でエンコードされた形式のusername:passwordとして送信されます。 以下のようにSecurityFilterを追加できます。

public class SecurityFilter implements Filter{ 
public void doFilter(ServletRequest req, ServletResponse resp, 
    FilterChain chain) throws IOException, ServletException { 
    String auth = httpRequest.getHeader("Authorization"); 
    if (auth != null && auth.startsWith("Basic")) { 
     String base64Auth = auth.substring("Basic".length()).trim(); 
     String credentials = new String(Base64.getDecoder().decode(base64Auth), 
       Charset.forName("UTF-8")); 
     String[] usernamePassword = credentials.split(":",2); 
    // Query to database and do authentication here using username and password. 
    //if(successfull) 
    // chain.doFilter(req, resp); 
    //else 
    // return 401 error 
} 

} 
関連する問題