일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬
- 라이브템플릿
- 백준
- brute force
- counting elements
- springboot
- 소수
- 2018 KAKAO BLIND RECRUITMENT
- applicationeventpublisher
- BFS
- 탐욕법
- Dijkstra
- 프로그래머스
- Spring
- javascript
- 문자열
- java
- 최단경로
- 코딩테스트
- Python
- API
- error
- algorithm
- 2981
- HTTP
- Greedy
- spring security
- 알고리즘
- beandefinitionstoreexception
- codility
- Today
- Total
Altiora Petamus
Spring Security란? 본문
스프링 시큐리티란?
시큐리티가 필요한 이유
웹사이트는 각종 서비스를 하기 위한 리소스와 서비스를 사용하는 유저들의 개인정보를 가지고 있습니다. 이들 리소스를 보호하기 위해서 일반적으로 웹사이트는 두가지 보안 정책을 설정해야 합니다.
1. 인증 (Authentication)
사이트에 접근하는 사람이 누구인지 시스템이 알아야 합니다. 익명사용자(anonymous user)를 허용하는 경우도 있지만, 특정 리소스에 접근하거나 개인화된 사용성을 보장 받기 위해서는 반드시 로그인하는 과정이 필요하겠죠. 로그인은 보통 username / password 를 입력하고 로그인하는 경우와 sns 사이트를 통해 인증을 대리하는 경우가 있습니다.
UsernamePassword 인증
- Session 관리
- 토큰 관리 (sessionless)
SNS 로그인 (소셜 로그인)
웹에서 유저들의 정보를 관리하지 않고 Facebook, google, kakao 같은 기업들에게 대신 인증을 처리해주도록 요청하는 방식입니다.. 큰 기업들은 보안에 많은 투자를 하기 때문에 일반적으로 직접 구현하는 것보다 더욱 안전한 인증 처리를 할 수 있습니다.
- 인증 위임
2. 권한 (Authorization)
권한은 쉽게는 어노테이션을 활용해서 처리하며 비즈니스로직이 복잡해지면 AOP 방식을 활용해서 처리합니다. 처리하는 방식은 비즈니스 로직에 따라서 굉장히 다양하므로 어떤 방식이 정답이다라고 말하기는 힘들며, 상황에 맞게 알맞은 방식을 선택해서 처리하는 것이 좋습니다.
- @Secured : deprecated
- @PrePostAuthorize
- AOP
사용자가 누구인지 알았다면 사이트 관리자 혹은 시스템은 로그인한 사용자가 어떤 일을 할 수 있는지 권한을 설정해줍니다. 권한은 특정 페이지에 접근하거나 특정 리소스에 접근할 수 있는 권한여부를 판단하는데 사용됩니다. 개발자는 권한이 있는 사용자에게만 페이지나 리소스 접근을 허용하도록 코딩해야하는데, 이런 코드를 쉽게 작성할 수 있도록 프레임워크를 제공하는 것이 스프링 시큐리티 프레임워크(Spring Security Framework) 입니다.
'Java > Spring Framework' 카테고리의 다른 글
다양한 HTTP Mapping 1 (0) | 2021.07.28 |
---|---|
in-memory DB 구현 (0) | 2021.06.30 |
Spring Security 사용하기 1 (0) | 2021.06.26 |
[Spring] AOP 활용하기 (0) | 2021.05.20 |
[Spring] ApplicationEventPublisher 를 사용한 Event 처리 (0) | 2021.05.17 |