본문 바로가기

Spring|Spring-boot/Spring Security7

SecurityContextPersistenceFilter 보호되어 있는 글 입니다. 2022. 10. 30.
Spring Security(4) 빠르게 스프링 시큐리티를 적용시킬 때는 UserDetails와 UserDetailsService를 사용합니다. 왜냐하면 이 두개의 인터페이스만 구현하면 스프링 시큐리티가 나머지는 쉽게 사용할 수 있도록 도움을 주기 때문입니다. 그 이후 설정은 차차 적용시키면서 구현하는 편입니다. 다음은 UserDetails Interface입니다. /* * Copyright 2004, 2005, 2006 Acegi Technology Pty Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtai.. 2021. 4. 4.
Spring Security Basic BasicAuthenticationFilter - 기본적으로 서버에서 내려줄 수 없는 경우에 사용합니다. 최근에 SPA 기반의 개발 시 클라이언트에서 자바스크립트를 통해 로그인폼을 만들기 때문에 서버를 통해서 페이지 리다이렉션을 통해서 로그인을 하는 것이 아니기 때문에 BasicAuthentication을 사용해야 합니다. 다음과 같이 설정합니다. @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .authorizeRequests().anyRequest().authenticated() .and() .httpBasic() ; } 서버에 보호되는 서비스가 존재한다고 했을 때 예를 들어 G.. 2021. 3. 28.
Spring Security Form Login 스프링 시큐리티는 DelegatingFilterProxy를 사용해 추상화된 필터를 사용합니다. 그중 Form으로 Login 하는 경우를 살펴봅니다. Form으로 login을 하는경우에는 UsernamePasswordAuthenticationFilter를 사용합니다. 이때 Token을 발급해주며 해당 토큰으로 원하는 페이지에 접근할 수 있습니다. 보통 새로운 SecurityConfig클래스에 WebSecurityConfigurerAdapter를 상속받아서 security의 설정 파일을 만들어 줍니다. dependencies { compile 'org.springframework.security:spring-security-web:4.2.2.RELEASE' compile 'org.springframework.. 2021. 3. 28.
Spring Security(2) Spring Security 서블릿 컨테이너 Tomcat과 같은 웹 애플리케이션을 서블릿 컨테이너라고 부릅니다. 이러한 애플리케이션은 기본적으로 필터와 서블릿으로 구성되어 있습니다. 톰캣을 웹 서버와 서블릿 컨테이너를 동시에 포함하고 있기에 서버 역할도 내장되어있긴 합니다. 순서를 보면 request가 threadlocal로 실행되어서 filterchain을 거쳐서 실제 DispatchServlet에 들어오고 이러한 컨테이너에서 서블릿의 생성과 종료를 위임받아 실행됩니다. 그래서 스프링 시큐리티는 DelegatingFilterProxy라는 필터를 만들어 메인 필터 체인에 끼워 넣고, 그 아래 다시 SecurityFilterChain 그룹을 등록합니다. 본래의 메인 필터를 반드시 통과해야만 서블릿에 들어갈.. 2021. 3. 21.
Spring Security(1) Spring boot를 이용하면 tomcat의 기본 port : 8080이므로 변경한다. 페이지가 아닌 SecurityContectHoler에서 Authentication을 얻어서 각 url의 요청에 권한 및 인증을 진행해본다. @RestController public class HomeController { @RequestMapping("/") public String index(){ return "home"; } @RequestMapping("/auth") public Authentication auth(){ return SecurityContextHolder.getContext() .getAuthentication(); } @PreAuthorize("hasAnyAuthority('ROLE_USER'.. 2021. 3. 21.
Spring Security 스프링이 해결하려는 문제는 웹사이트의 보안에 관한 문제입니다. 웹사이트에서는 각종 서비스를 하기 위한 리소스와 서비스를 사용하는 유저들의 개인 정보를 사용하여 서비스를 제공합니다. 리소스를 보호하기 위해서는 웹 사이트에서는 두 가지 보안 정책을 설정해야 합니다. 1. 서버 리소스 - 서버 자체의 정보 2. 유저들의 개인정보 - 유저들이 사이트를 이용하면서 만들어내는 정보들 인증 (Authentication) 사이트에 접근하는 사람이 누구인지 시스템이 알아야 합니다. 간단히 웹사이트를 둘러볼 익명 사용자(anonymous user)를 허용하기도 하지만, 특정 기능을 이용하기 위해서는 반드시 로그인하는 과정이 필요합니다. 우리는 username/pwd를 입력하여 로그인을 하는 경우와 구글, 카카오등 sns .. 2021. 3. 21.