Spring Boot + Spring Security ~ 샘플 앱 구현 ~

Spring Security 정보



Spring Security는 강력한 액세스 제어 프레임워크입니다. 이렇게 하면 Spring 기반 애플리케이션을 보호할 수 있습니다.
Spring Security의 특징은 사용자 정의 요구 사항에 맞게 쉽게 확장할 수 있다는 점입니다. 예를 들어, 인증 체계를 변경하고 특정 경로를 액세스 제어하고 쉽게 할 수 있습니다.

보안 기능으로 표준 로그인 화면도 제공됩니다. 여기에서는 표준 로그인 화면을 확인합니다.

개발 환경



샘플 어플리케이션의 작성은, 아래와 같은 환경에 Spring Tool Suite (STS) 배포 가 완료되고 있는 것을 전제로 합니다.


종류
제품


JVM
자바 11

OS
Windows 10 64비트


샘플 애플리케이션 만들기



1. 신규 프로젝트 작성



Spring Tool Suite (STS) 메뉴에서 파일 -> 새로 만들기 -> Spring Starter Project를 선택하십시오.


New Spring Starter Project 대화 상자에서 다음을 입력하고 Next 버튼을 누릅니다.
- 이름 : spring-security1
- Java 버전: 11

종속성으로 아래에 체크를 하고 마침 버튼을 누릅니다.
▼개발 툴
· Spring Boot DevTools
・Lombok
▼보안
· Spring Security
▼템플릿 엔진
 ・Thymeleaf
▼Web
· Spring Web

2. 보안 만들기



[com.example.demo]에서 오른쪽 클릭 -> 새로 만들기 -> 클래스를 선택합니다.
새 Java 클래스 대화 상자에서 다음을 입력하고 마침 버튼을 누릅니다.
- 패키지 : com.example.demo.config (config 추가)
- 이름: SecurityConfig

SecurityConfig.java를 다음과 같이 편집합니다.

SecurityConfig.java
package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
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;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        // パスワードの暗号化用に、bcrypt(ビー・クリプト)を使用します
        return new BCryptPasswordEncoder();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            // 認証リクエストの設定
            .authorizeRequests()
                // 認証の必要があるように設定
                .anyRequest().authenticated()
                .and()
            // フォームベース認証の設定
            .formLogin();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
            // メモリ内認証を設定
            .inMemoryAuthentication()
            // "user"を追加
            .withUser("user")
            // "password"をBCryptで暗号化
            .password(passwordEncoder().encode("password"))
             // 権限(ロール)を設定
            .authorities("ROLE_USER");
    }
}

참고 정보
セキュリティを設定する場合、WebSecurityConfigurerAdapter を継承してクラスを作成します。クラスには、@Configuration と @EnableWebSecurityアノテーションを付けます。
@EnableWebSecurity・・・Spring Securityの機能を有効にします。
セキュリティの設定は、configure(http)とconfigure(auth)メソッドに記載します。これらの違いは、configure(http)がhttpリクエストの設定で、configure(auth)がユーザの設定です。

3. 컨트롤러 작성



[com.example.demo]에서 오른쪽 클릭 -> 새로 만들기 -> 클래스를 선택합니다.
새 Java 클래스 대화 상자에서 다음을 입력하고 마침 버튼을 누릅니다.
- 패키지 : com.example.demo.controller (controller 추가)
- 이름: SecurityController

SecurityController.java를 다음과 같이 편집합니다.

SecurityController.java
package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class SecurityController {

    @GetMapping("/")
    public String success() {
        return "success";
    }
}

4. Thymeleaf 템플릿 만들기



템플릿에서 마우스 오른쪽 버튼을 클릭 -> 새로 만들기 -> 기타를 선택합니다.
새로 만들기 대화상자에서 웹 -> HTML 파일을 선택하고 다음 버튼을 누릅니다.
새 HTML 파일 대화 상자에서 다음을 입력하고 마침 버튼을 누릅니다.
- 파일 이름: success.html

list.html을 다음과 같이 편집합니다.

list.html
<!DOCTYPE html>
<html xmlns:th="www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <h2>ログイン成功</h2>
  <a th:href="@{/logout}">ログアウトの確認メッセージへ</a><br>
  <br>

  <form th:action="@{/logout}" method="post">
    <button>ログアウトする</button>
  </form>
</body>
</html>

SpringSecurity1Application에서 마우스 오른쪽 버튼 클릭 -> 실행 -> Spring Boot 응용 프로그램을 선택합니다.
콘솔에서 시작을 확인한 후 브라우저에서 http://localhost-8080.com/에 액세스합니다.

표시된 화면에서 사용자 이름 "user"와 암호 "password"를 입력하면 로그인 할 수 있습니다.

참고서적
「Spring Boot 2.3 입문: 기초부터 실연까지」(전자 서적)

좋은 웹페이지 즐겨찾기