構成要素

処理系

AuthenticationFilter一番大外のフィルター
AuthenticationManagerフィルターから呼ばれ、認証処理を行うProviderを呼び出す
AuthenticationProvider認証処理
AuthenticationSuccessHandler認証成功時に呼ばれる。標準実装ありSavedRequestAwareAuthenticationSuccessHandlerがデフォルトで以前のURLに認証後に飛ばす
AuthenticationFailureHandler失敗時のHandler。こちらも標準実装あり例外ごとに処理を分けてくれるやつとか便利そうだ。
UserDetailService認証をするInterface。AuthenticationProviderとなる
PasswordEncoderパスワード暗号化のInterface。実装クラスとしてはBCryptPasswordEncoderなどがある

DTO系

ユーザー情報org.springframework.security.core.userdetails.User認証以外の情報を持たせるなら継承せよ

イベントリスナー

@EventListenerがあると呼ばれるようになった。認証成功、セッションID再発行(張り替え)成功、全て成功、失敗、ロック、見つからない、いろいろあるので必要に応じて定義せよ。

   @EventListener
   public void handleSuccess(AuthenticationSuccessEvent event);
   @EventListener
   public void handleFailure(AuthenticationFailureEvent event);

大元の設定

WebSecurityConfigurerAdapterを継承したものを定義しておく。

設定

BASIC認証

http://tnakamura.hatenablog.com/entry/2017/06/22/spring-security-basic-authentication

DB認証

認証

認可

コンポーネント

Authentication-manager認証処理を行うが、実際の処理はproviderに委譲
Authentication-provider実際の認証処理を行う。ユーザー認証はまたUserDetailServiceへ
UserDetailsServiceデフォルト実装としてメモリベースやJDBCが容易されている。

設定

認証要否

Configでパス単位で設定するか、各クラスで@PreAuthorize

permitAll認証不要
isAuthenticated()認証必須

設定例

       http
               .authorizeRequests()
               .antMatchers("/css/**", "/fonts/**", "/js/**").permitAll()
               .anyRequest().authenticated();

JDBCを使う場合

テーブル定義

CREATE TABLE USERS (
    USERNAME VARCHAR_IGNORECASE(50) NOT NULL PRIMARY KEY,
    PASSWORD VARCHAR_IGNORECASE(50) NOT NULL,
    ENABLED  BOOLEAN NOT NULL
);
CREATE TABLE AUTHORITIES (
    USERNAME  VARCHAR_IGNORECASE(50) NOT NULL,
    AUTHORITY VARCHAR_IGNORECASE(50) NOT NULL,
    CONSTRAINT FK_AUTHORITIES_USERS FOREIGN KEY (USERNAME) REFERENCES USERS(USERNAME),
    CONSTRAINT UK_AUTHORITIES UNIQUE (USERNAME, AUTHORITY)
);
INSERT INTO USERS VALUES ('fuga', 'FUGA', true);
INSERT INTO AUTHORITIES VALUES ('fuga', 'USER');

アノテーション

XML

OAuth2


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS