본문 바로가기

728x90

전체 보기

(111)
Authorization 구현 처리 AJAX 실습에 이어서 Authorization 측면을 자체 적용하는 실습을 진행해보도록 하겠습니다. 우선 원리에 대해서 다시 한번 이해할 필요가 있습니다 . 스프링 시큐리티는 3가지 정보를 가지고 인가를 처리합니다. 1) 인증 정보 : 인증 완료된 Session에 저장된 (SecurityContextHolder) Authentication 객체 2) 요청 정보 : 사용자가 요청한 자원의 정보 3) 권한 정보 : 해당 자원을 접근하기 위해서 필요한 권한 정보 (Authorization 파헤치기 게시물 참조해보면 될 듯) 우선 Security Configuration 파일에 지정한 정보들을 살펴보면, 대게 다음과 같습니다. @Override protected void configure(final HttpS..
Ajax로 새로운 Security 설정을 연습해보자 1. Ajax 는 FormLogin 과는 다르게 비동기 방식의 JS 통신을 말함 2. 타방법의 인증을 선택하려면 기본적으로 Form Login은 사용하지 않는 것이다. 3. Spring 은 기본적으로 Form Login 을 사용하고 있고, Form Login을 위한 설정들이 박혀 있기 때문에, 그 것을 사용하지 않으려면 Filter, Token, Provider 등을 구현해야 한다. 4. fromLogin 은 disable 후 사용하는게 좋으나, Session 저장 관련해서도 같이 끄기 때문에 SCHoler 등에 저장하는 것은 직접 따로 구현해봐야 할 듯. =================== 인증을 위한 객체들, Ajax 와는 크게 무관. 하지만 기본적으로 필요 ============= 1. Accoun..
[Spring Security] 7 - 인가 파헤치기. Authorization 인가> 자원 요청시 그 자원을 요청할 자격이 되는지 확인 하는 것. 즉, 당신에게 무엇이 허가되어 있는지 증명하는 것 그림 Web App 접근 > 인증여부 판단 (인증이 되었을 경우 이쪽으로 올 수 있음)Resoruce 접근 > 인가여부 판단 시큐리티 지원하는 권한 계층 1) 웹 계층 >> URL 요청에 따른 메뉴 or 화면 단위 (/user 라는 경로로 자원 접근. 경로에 대해 설정된 권한 확인) 2) 서비스 계층 >> 메소드 단위 (user() invoke 시 함수에 대해 설정된 권한 확인) 3) 도메인 계층 >> 객체 단위의 레벨 보안 (user 객체 단위에 R/W 접근시 권한 확인) (웹 계층과 서비스 계층을 제일 많이 함) 인가는 걍 얘임 > FilterSecurityInterceptor(또 등..
[Spring Security] 6 - 인증 파헤치기. Authentication Authentication = 인증한다 유저가 누구인지 증명하는 것 . 사용자의 인증 정보를 저장하는 토큰 개념으로 사용함 Authentication 객체에 전달한 id, pw 를 통해 객체를 형성 --> 인증 후 --> Authorization 정보 및 User 객체 정보를 가지고 재형성되어, SecurityContext 에 저장된다. Authentication = Interface 임. 구조도 Object principal : 사용자 Id 혹은 User 객체 자체 저장 Object credentials : 사용자 PW 를 저장 Collectioin authorities : 사용자의 권한 목록 Object details : 인증 부가 정보 boolean isAuthenticated : 인증 여부 2-3..
[Spring Security] 5. 아키텍쳐 이해 - 위임 필터, 필터 빈 및 필터들에 대하여 * 위임 필터 및 필터 빈 초기화 - DelegatingProxyChain / FilterChainProxy Servlet Filter > 요청이 서블렛으로 가서 요청을 처리하게 됨. 그 요청을 서블렛에서 받기 전에 필터가 받음. 최종적으로 응답하기 전에 다시 필터가 받아서 필터가 클라이언트에게 응답을 하게 됨. 필터는 접근 전과 후를 처리한다. doFilter() 전과 후임. 이 필터는 서블릿 스펙에 정의된 기술. 서블릿 스펙을 지원하는 Servlet Container에서 생성이 되고 실행이 됨. 따라서 필터는 스프링에서 정의된 빈을 주입해서 사용할 수 없음!! >> 스프링 빈이 정의되는 공간은 Spring Container 이고, 필터 관련된 부분은 Servlet Container 이기 때문임!! >..
[Spring Security] 3. 웹의 기본, 세션 관리 방식과 Spring Security 동시 세션 제어 > 사용자들이 서버에 인증을 받을 때, 서버에서 허용하는 동일한 계정에 대한 최대 접속 허용 갯수가 있음. > 만약에 n개까지 허용하고 현재 n 개의 세션이 저장되어 있는데, 한 명이 더 요청을 해서 세션을 형성시켜야 하는 경우, Security는 크게 두가지 전략으로 이에 대응한다. 1안 : 이전 사용자 세션 만료 사용자1의 세션은 서버단에서 만료시키는 것. 그래서 사용자2가 세션을 형성했을 경우, 사용자1이 다시 자원요청을 할 때, 서버에선 사용자1의 요청을 들어주지 않고 다시 인증 페이지로 유도한다. 2안 : 현재 사용자 인증 실패 단순하게 세션이 모두 차 있으니, 새로운 세션 형성을 막아서 로그인을 못하게 한다. 이건 좀 이상한 듯. 이렇게 되면 사용자1의 세션이 만료될 때까지 아..
[Spring Security] 2 - Security의 인증과 인가의 기본 살펴보기 웹 개발에서 백엔드 업무를 하시거나, 공부 해보신 분이라면 유저 인증, 유저 인가에 대해서 들어보신 적이 있으실 겁니다. 도대체 그게 뭔지, 그리고 Security에서 어떻게 지원해주는지 기본적인 부분들을 살펴보겠습니다. Spring Security의 인증, 인가 지원하는 방식에 대해 본격적으로 배우는 단계는 아니며, 정말 "간단히 이런 방식이구나" 만 파악해보면 됩니다. 내부적으로는 앞으로 천천히 파헤쳐보도록 하겠습니다. 인증과 인가 인증이란 사용자의 신원을 검증하는 행위이고, 인가란 그 사용자가 특정 리소스나 기능에 엑세스 할 수 있도록 권한을 부여하는 행위를 말합니다. 쉽게 말해서 인증이란 로그인하는거고, 인가란 관리자, 일반유저 등의 접근 가능 범위에 따른 권한이 나뉘는 것입니다. Spring S..
[Spring Security] 1 - 무작정 시작하는 Security와 개요 프로그램을 배포할 때, 특히 DB가 있는 웹 서비스나 프로그램을 배포할 때 개발자로서 가장 걱정되는 것 중 하나는 역시 보안입니다. 내가 어떻게 막아두든 훨씬 잘하는 공격자들이 마음만 먹으면 얼마든지 공격할 수 있을 것 같기 때문입니다. 사실 보안 전문가와 같이 일하지 않는다면 "완벽한 보안"이란 웹 서비스 개발자들 입장에서는 달성하기 어려운 과제가 아닐까 합니다. 그래도 개발자라면 책임감을 가지고 서버이든, 앱이든 할 수 있는 보안에는 최선을 다해야 합니다. 그러기에 Spring에서도 Admin단에서 효율적인 보안 처리를 도와주는 제공 API가 있는데, 바로 Spring Security 입니다. Spring Security를 배우기에 앞서서는 Spring의 기본적인 사항들, 그리고 Spring의 라이프..
[Docker] Reverse Proxy 도커 구축 Proxy Server -> 중간에 있는 것. 클라이언트가 자신을 통해, 다른 네트워크 서비스에 접속하게 해줄 수 있는 서버를 말함. 중앙 host 를 통해, 뒷단에 있는 여러 서비스에게 분배. (Log Server, Backend Server, Message Server ..) 마이크로 서비스의 기본. 분류 1) Forward Proxy ex> 중국은 거대한 Forward Proxy 서버가 있으서, 중국 내 모~든 사용자의 접속을 다 받음. 국외 접속 제어 및 인터넷 로깅을 감시함. 클라이언트가 외부 인터넷에 직접 접근하는 것이 아니라, Proxy Server에 외부 인터넷 접근 요청. Proxy Server가 대신 접속 결과를 받은 후에 클라이언트에 전달. 프락시 서버가 특정 주요 인터넷 서비스를 캐..
[Docker] Docker Compose 웹 구축 ; FE 서버, DB 서버, BE 서버 모두 필요함. > 여러개의 도커로 서비스가 이루어져 있는 경우가 많음. > 여러개의 도커를 한번에 띄우고, 관리할 수 있는 툴이 필요한데, 이를 관리하기 위해서 Compose 기능이 들어옴. Docker compose 는 컨테이너 작성, 컨테이너 연결 및 동작성 등을 관리하기 위한 툴임. docker-compose.yml 파일로 작성함. (야멜 형식) 데이터를 구조화시키는 문법 > JSON, XML, CSV , YML 등 들여쓰기와 Key Value 를 중심으로 문법을 함. DOcker Compose 문서의 대표적인 key 값들 1. version - 해당 컴포즈 파일의 포맷 버전. - 현재 지원하는 도커 버전에 맞춰서 쓰면 됨. > 현재는 보통 3 이라고..