2018.08.25この記事は約7分で読めます。Bootに関する投稿です。Security)を使用する方法についてのメモです。BootでSecurity機能を利用するには、spring-boot-starter-securityパッケージを依存関係に追加します。spring-boot-starter-securityを依存関係に追加すると、Webアプリケーションで必要となるセキュリティ機能を含んだspring-security-webパッケージが追加されます。Security機能を使うための基本的なコンフィグレーションをしてくれます。そのため、starterパッケージ指定をするだけで、すぐに基本的なセキュリティ機能を利用できるようになっているようです。jstlを使う設定compile('javax.servlet:jstl')runtime('org.springframework.boot:spring-boot-devtools')compileOnly('org.projectlombok:lombok')testCompile('org.springframework.boot:spring-boot-starter-test')testCompile('org.springframework.security:spring-security-test')}上記のようなビルド定義を行ないgradleでコンパイルします。STSを使うと、上記のような定義ファイルとプロジェクトの雛形を作成してくれます。続いて、application.propertiesにユーザ名やパスワードを指定します。その他、この例ではJSPを使うので、jspファイルを置くパスやファイルの拡張子を設定しています。後はロガーの設定です。Bootのアプリケーションを起動します。以下の通り、特別な設定もありませんし、コントローラの定義もしていません。args);}}アプリケーションを起動したら、以下のURLにブラウザからアクセスしてみます。http://localhost:8080/login上記のようなスクリーンショットが表示されると思います。Securityが提供してくれているログインフォームが返されるようになっています。した認証機能付のWebツールを作るのに、数ステップで実行できることが分かります。デフォルトのログイン認証では、メモリ上に保持しているユーザー、パスワードに対してマッチングするような動きになっています。ユーザー名とパスワードの指定をしない場合、ユーザー名「user」でパスワードはランダム生成されたUUIDが使われるので、上記の例ではapplication.propertiesでパラメータの定義をしています。Securityは、サーブレットのフィルタの仕組みを利用し、セキュリティ機能を実装しています。特定のパスにマッチするリクエストに対し認証を要求したり、逆に静的リソースなど特定のパスにマッチするリクエストは制限しないといったことができます。セキュリティフィルタの入り口となるDelegatingFilterProxyは、初回にspringSecurityFilterChainというBeanに処理を委譲します。springSecurityFilterChainは、セキュリティフィルタチェーンを構築しFilterChainProxyというフィルタを呼び出し元に返します。初回以降、DelegatingFilterProxyはこのFilterChainProxyをdelegatorとし保持し、FilterChainProxyに処理を委譲するようになっています。FilterChainProxyクラスは、複数のSecurityFilterChainを保持しており、SecurityFilterChainはリクエストに適用する一連のFilterを保持しています。SecurityFilterChainは、自分自身がどのリクエストに対してFilter群を実行するかを判別するため、RequestMatcherを使ってマッチング処理を行ないます。FilterChainProxyクラスは、SecurityFilterChainを順に辿り、最初にマッチングしたSecurityFilterChainが適用するという仕組みになっています。Security機能の自動設定が行われています。これは、DIコンテナの力によるものです。Bootでは不要のようです。変わりにspring-boot-autoconfigureに含まれるWebSecurityEnablerConfigurationクラスが定義をしてくれています。アプリケーション開発者としては、WebSecurityConfigurerAdapterを継承したクラスを作成し、セキュリティフィルタの設定等を行なっていけば良いようです。Securityは、サーブレットのフィルタの仕組みを利用しています。SecurityのBean名springSecurityFilterChainで登録されているフィルタをサーブレットフィルタとしてコンテナに登録しています。Securityのフィルタが登録され利用可能になっています。DelegatingFilterProxyRegistrationBeanは、ServletContextInitializerインターフェースの実装クラスの1つで、コンテナ初期化時にServletWebServerApplicationContextの中でハンドラメソッドが呼ばれます。Securityを使えるようコンフィグレーションを定義してくれているため、spring-boot-security-starterパッケージを依存に追加するだけで、すぐに基本的な機能を利用可能になります。次回は、認証まわりの仕組みや実際のWebアプリケーションで行われているようなデータベースと連携した認証方法などについてまとめていきたいと思います。Bootを使ったWebアプリケーション開発について学んでいます。Bootであればサクッと作れそうと思ったからです。Security機能を有効化する方法について見てきました。Securityの認証機能の1つであるデータベースを使った認証の仕組みについて見ていきます。Bootに関する投稿です。Bootでサーブレットフィルタを設定するにはどうするか?、です。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。名前:moritetuITエンジニア地方でITエンジニアをしています。Webやスマフォアプリ、Hadoopなどのビッグデータに関するシステムに関わり、現在は企画開発の業務をしています。(必須)サイトタイトルとURLをコピーしました。