Spring深化2週目


Web認証と認証

  • 認証:ユーザのアイデンティティを識別する動作
  • 承認(承認):ユーザー権限を確認する行為
  • Web認証と認証
  • 認証:ログインによりアイデンティティ(主にアイデンティティとパスワード)
  • を確認する.
  • ライセンス:主にロールベースの権限管理
  • Cookieとセッション


  • なぜCookieと会話が必要なのですか?
  • クライアントがサーバと通信すると、API要求が発行され、HTTP通信約定に従う.
  • このHTTPはユーザを区別しない.つまり、ステータスは保存されません.
  • は、HTTPの状態を区別するためにCookieとセッションを必要とする.Cookieとセッションは、HTTPでステータス情報を保持するために使用されます.これは、Cookieとセッションを通じて、サーバがクライアントごとに認証と認可を行うことができることを意味します.

  • クッキー
  • ファイル
  • クライアントに格納するために新しく作成された小さな情報を含む
  • は、Webブラウザに記憶する
  • である.

  • セッション
  • サーバは、クライアント状態(サーバに格納)を一定期間保持するための
  • サーバである.
  • サーバは、クライアントごとにユニークな「セッションID」を提供し、クライアント固有の情報をサーバに格納する
  • .
  • サーバにより生成された「セッションID」は、クライアント識別用のクライアントのCookie値(セッションCookie)として記憶される
  • セッション動作

  • Cookieとセッションの比較

  • スプリング安全フレーム

  • 「Spring Security」フレームワーク:Springサーバの認証と認証に必要な機能を提供し、開発の作業量を削減します.
  • 「Spring Security」フレームワーク:buildを追加します.gradleにコード
  • を追加
    // 스프링 시큐리티
    implementation 'org.springframework.boot:spring-boot-starter-security'
    // Thymeleaf (뷰 템플릿 엔진)
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
  • [ばねの安全性]:WebSecurityConfigを有効にします.Javaファイル
  • を追加
    package com.sparta.springcore.security;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    
    @Configuration
    @EnableWebSecurity // 스프링 Security 지원을 가능하게 함
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable();
            http.headers().frameOptions().disable();
    
            http.authorizeRequests()
                    .anyRequest().authenticated()
                    .and()
                    .formLogin()
                    .defaultSuccessUrl("/")
                    .permitAll()
                    .and()
                    .logout()
                    .permitAll();
        }
    }
    - 해당 코드를 추가함으로써 자동으로 로그인페이지가 만들어진다. 아이디는 user, 비밀번호는 콘솔에 찍혀있는 제공되는 비밀번호로 로그인 가능하다. 

    会員登録機能の実施

  • DBに格納するメンバー情報エンティティの設計
  • パスワード実装
  • ハッシュ関数により暗号化形式でパスワード
  • を格納する
  • の「一方向」暗号アルゴリズムが使用するため、
  • は復号できない.
  • Spring Securityが提供する「BCrypt」ハッシュ関数
  • を使用
        @Bean
        public BCryptPasswordEncoder encodePassword() {
            return new BCryptPasswordEncoder();
        }

    ログインとログアウト機能の実装


  • スプリングセキュリティによるログイン処理


  • ログインプロセス:認証/認証が成功した場合にのみ、コントローラにメンバー情報を送信します.