[Spring Security] Spring Security란?

SeongWon Oh·2021년 12월 26일
4

Spring Framework

목록 보기
23/33
post-thumbnail

Spring Security란?

  • Spring Security는 Spring기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크이다.
  • Spring Security는 '인증(Authentication)'과 '권한(Authorization)'에 대한 부분을 Filter의 흐름에 따라 처리를 하고 있다.
  • 많은 보안 관련 옵션들을 제공해주어 개발자가 보안 로직을 하나씩 작성하지 않아도 되는 장점이 있다.

인증(Authentication)과 권한(Authorization)

  • 인증(Authentication)
    • 사이트에 접속하려는 자가 누구인지 확인하는 절차이다. (사용자가 본인인지 확인)
    • UsernamePassword를 통한 인증을 할 수 있다. (Session관리, Token관리)
    • SNS로그인을 통한 인증 위임을 할 수도 있다.
  • 인가, 권한(Authorization)
    • 사용자가 어떤 일을 할 수 있는지 권한 설정하는 절차이다.
    • 특정 페이지/리소스에 접근할 수 있는지 권한을 판단한다.
    • Secured, PrePostAuthorize 어노테이션으로 쉽게 권한 체크를 할 수 있다.
    • 비즈니스 로직이 복잡한 경우 AOP를 이용해 권한 체크를 해야한다.

인증(Authentication)절차를 거친 후에 권한(Authorization)절차를 진행하게 된다.

Spring Security에서는 이러한 인증과 인가를 위해 Principal을 아이디로, Credential을 비밀번호로 사용하는 Credential 기반의 인증 방식을 사용한다.

  • Principal(접근 주체): 보호받는 Resource에 접근하는 대상
  • Credential(비밀번호): Resource에 접근하는 대상의 비밀번호

Spring Security 의존성 추가 방법

spring security의 의존성이 추가되지 않은 경우 해당 url을 접속하였을 때 아무런 보안, 인증 없이 접속이 가능합니다. 그러한 프로젝트에 다음과 같이 spring security의존성을 추가해보겠습니다.

Maven 방식

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

Gradle방식

implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'

security의존성을 추가하면 다음 사진과 같이 특정 url에 접속을 할 때 인증을 받게 됩니다.
해당 로그인 화면은 Spring Security에서 제공하는 기본적인 로그인 페이지이며 사용자의 설정에 따라 사용자가 직접 만든 디자인의 페이지로 변경이 가능합니다.

해당 페이지의 로그인 정보는 기본 설정으로 Username, 즉 id는 user가 기본 아이디이며 패스워드는 아래의 이미지의 네모로 표시된 부분이 기본 비밀번호가 됩니다.

해당 아이디와 비밀번호를 입력을 하여 접속을 하면 접속하고자 하였던 url에 접속을 하실 수 있습니다.

아이디와 비밀번호는 application.properties에서 다음과 같이 고정된 id/pw를 설정하여 테스트를 할 수도 있습니다.

spring.security.user.name=user
spring.security.user.password=1111

오늘은 Spring Security가 무엇인가와 Spring Security의 의존성 추가 방법에 대해 알아봤습니다. 다음 포스트부터 더욱 구체적으로 Spring Security에 대해 알아보겠습니다.


Reference

profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글