본문 바로가기
Spring|Spring-boot/Spring Security

Spring Security

by oncerun 2021. 3. 21.
반응형

스프링이 해결하려는 문제는 웹사이트의 보안에 관한 문제입니다.

 

 

 

웹사이트에서는 각종 서비스를 하기 위한 리소스와 서비스를 사용하는 유저들의 개인 정보를 사용하여 서비스를 제공합니다.

리소스를 보호하기 위해서는  웹 사이트에서는 두 가지 보안 정책을 설정해야 합니다.

 

1. 서버 리소스

 - 서버 자체의 정보

2. 유저들의 개인정보

 - 유저들이 사이트를 이용하면서 만들어내는 정보들

 

 

인증 (Authentication)

 사이트에 접근하는 사람이 누구인지 시스템이 알아야 합니다. 간단히 웹사이트를 둘러볼 익명 사용자(anonymous user)를 허용하기도 하지만, 특정 기능을 이용하기 위해서는 반드시 로그인하는 과정이 필요합니다.

우리는 username/pwd를 입력하여 로그인을 하는 경우와 구글, 카카오등 sns 계정을 통해 대리 인증하는 경우가 존재합니다.

 

UsernamePassword 인증

 - Session 관리

 - Token 관리(sessionless) : 요즘 서버들이 scale-out을 하면서 여러 대의 서버를 사용하는 경우가 많다.

 이경우에는 세션을 통한 인증이 불가능하므로 토큰방식을 많이 사용한다.

 

SnS 로그인 : 인증 위임

 

인가 (Authorization)

 사용자가 누구인지 알았다면 사이트 관리자 혹은 시스템은 로그인한 사용자가 어떤 일을 할 수 있는지 권한을 설정한다. 권한은 특정 페이지에 접근하거나 특정 리소스에 접근할 수 있는 권한 여부를 판단하는 데 사용된다. 개발자는 권한이 있는 사용자에게만 페이지나 리소스 접근을 허용하도록 코딩해야 하는데, 이런 코드를 쉽게 작성할 수 있도록 프레임워크를 제공하는 것이 스프링 시큐리티 프레임워크이다.

 

쉽게 예를 들면 API 서버가 있다. 한 유저는 해당 API 서버에 자신이 누군지 인증을 시도합니다. 그 이후 특정 API를 호출에 정보를 얻어야 하는 행동을 해야 하는데, 그 행동을 하기 위해선 자신이 관리자의 권한을 가지고 있다는 것을 알리고 해당 API를 호출해 정보를 얻을 수 있겠죠.

 

스프링 시큐리티에서의 인가는 애노테이션을 활용합니다.

@Secured : deprecated

@PrePostAuthorize 

AOP : 비즈니스 로직이 복잡해지면 로직에 맞게 권한을 AOP를 사용하는 경우도 존재합니다.

즉 다양한 방법을 사용합니다. 

반응형

'Spring|Spring-boot > Spring Security' 카테고리의 다른 글

Spring Security(4)  (0) 2021.04.04
Spring Security Basic  (0) 2021.03.28
Spring Security Form Login  (0) 2021.03.28
Spring Security(2)  (0) 2021.03.21
Spring Security(1)  (0) 2021.03.21

댓글