일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- cors
- 정적 리소스
- 스프링부트
- application.properties
- 알고리즘
- AuthenticationPrincipal
- 백트래킹
- Spring Security
- Application Runner
- 다익스트라
- 외부설정
- Application Argument
- OAuth2
- rest api
- @ConfigurationProperties
- 리소스핸들러
- webjar
- @Profile
- 스프링 부트
- JPA
- 브루트포스
- EnableAutoConfiguration
- 백기선
- 리소스 서버
- WebApplication Type
- HttpMessageConverters
- 백준
- HATEOAS
- JsonSerializer
- Application Event
- Today
- Total
목록분류 전체보기 (114)
아카이브
왜 JPA를 학습해야 하는가? 도메인 주도 개발이 가능합니다. 애플리케이션의 코드가 SQL 데이터베이스 관련 코드에 잠식당하는 것을 방지하고 도메인 기반의 프로그래밍으로 비즈니스 로직을 구현하는데 집중할 수 있습니다 그리고 개발 생산성에 좋으며, 데이터베이스에 독립적인 프로그래밍이 가능하고, 타입 세이프한 쿼리 작성 그리고 Persistent Context가 제공하는 캐시 기능으로 성능 최적화까지 가능합니다 학습 목표 ORM(Object-Relation Mapping)에 대해 이해합니다 JPA를 사용할 때 반드시 알아야 하는 특징을 이해합니다 스프링 데이터 JPA의 구동 원리를 이해합니다 스프링 데이터 JPA를 사용하여 다양한 방법으로 Repository를 구현할 수 있습니다 스프링 데이터 JPA를 사용..
https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net public class p18111 { static int N, M, B; static int[][] arr; static int MIN_HEIGHT = Integer.MAX_VALUE; static int MAX_HEIGHT = Integer.MIN_VALUE; public static void main(String[] args) throws IOException { BufferedReader..
public class p1874 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n + 1]; for (int i = 1; i
민감정보는 출력하지 않도록 JsonSerializer를 상속하자. Account의 id만 보내주도록 설정하기 @Override public void serialize(Account account, JsonGenerator gen, SerializerProvider serializers) throws IOException { gen.writeStartObject(); gen.writeNumberField("id", account.getId()); gen.writeEndObject(); } Event의 manager field에 적용하기 @JsonSerialize(using = AccountSerializer.class) // Event를 serialize 하는 경우, manager field에 대해서는 A..
SecurityContext 자바 ThreadLocal 기반 구현으로 인증 정보를 담고 있다. ※ ThreadLocal ? 오직 한 Thread에 의해서 read/write 가능한 variable을 생성할 수 있도록 하는 것(Thread Local Variable) 인증 정보를 꺼내는 방법 Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); // Anonymous인 경우 principal = "anonymousUser" 로 String 이다. @AuthenticationPrincipal spring.security.User user 인증을 안했다 ? null : username과 authorities..
리소스 서버 OAuth2 인증 서버와 연동해서 사용한다. 리소스 인증 서버는 리소스를 제공하는 서버와 같이 두고, OAuth2 인증 서버는 따로 분리하는 게 맞다. 리소스에 대한 요청이 들어오면, OAuth2 서버에 access_token이 존재하는지 확인하고 없으면 접근을 제한한다. ResourceServer 설정 @EnableResourceServer extends ResourceServerConfigurerAdapter configure(ResourceServerSecurityConfigurer resources) resource_id configure(HttpSecurity http) anonymous GET /api/** : permit all POST /api/**: authenticated ..
OAuth2(Open Authorization, Open Authentication 2) : 인증을 위한 표준 프로토콜 1~5 단계는 Authorization Code 발급 요청 URL을 통해 진행할 수 있습니다. 7~8 단계는 서비스에서 callback URL을 통해 전달받은 Authorization Code를 사용하여 Access Token 요청 API를 통해 진행할 수 있습니다. 8 단계에서 발급받은 Access Token은 서비스에서 자체적으로 저장, 관리해야 합니다. 10~11 사용자의 서비스 요청 시 회원정보가 필요하다면 Access Token을 사용해 API를 호출할 수 있습니다. OAuth2 서버를 통해 인증 토큰을 받는다. 토큰 발행 테스트 User Client POST /oauth/to..
configure(HttpSecurity Http) 커스터마이징 익명 사용자 사용 활성화 폼 인증 방식 활성화 기본 로그인 페이지 제공 요청에 인증 적용 /api 이하 모든 GET 요청에 인증이 필요함 (permitAll()을 사용하여 인증이 필요 없이 익명으로 접근이 가능케 할 수 있음) 그밖에 모은 요청도 인증이 필요함 /* filterchain 안에서 거르기*/ @Override protected void configure(HttpSecurity http) throws Exception { http .anonymous()// 익명사용자 허용 .and() .formLogin()// 폼 인증 .and() .authorizeRequests()// 인증요청에 대해서 .mvcMatchers(HttpMetho..
시큐리티 필터를 적용하기 않음 /docs/index.html 로그인 없이 접근 가능 GET /api/events GET /api/events/{id} 로그인해야 접근 가능 나머지 다 POST /api/events PUT /api/events/{id} ... 스프링 시큐리티 OAuth 2.0 AuthorizationServer: OAuth2 토큰 발행(/oauth/token) 및 토큰 인증(/oauth/authorize) Oder 0 (리소스 서버보다 우선순위가 높다.) ResourceServer: 리소스 요청 인증 처리 (OAuth2 토큰 검사) Oder 3 (이 값은 현재 고칠 수 없음) 스프링 시큐리티 설정 @EnableWebSecurity, @EnableGlobalMethodSecurity exte..
스프링 시큐리티 웹 시큐리티 (Filter 기반 시큐리티): 웹 요청에 보안인증을 함 메서드 시큐리티: 웹과 상관없이 어떠한 메서드가 호출됐을 때 인증 또는 권한을 확인해줌 이 둘 다 Security Interceptor를 사용합니다 리소스에 접근을 허용할 것이냐 말것이냐를 결정하는 로직이 들어있음 Filter 기반으로 동작하기 때문에 Spring MVC와 분리되어 동작한다. 보안 관련 용어 접근 주체(Principal) : 애플리케이션에 접근하는 유저 인증(Authentication) : 접근한 유저를 식별하고, 접근할 수 있는지 검사 인가(Autorize) : 인증된 유저가 애플리케이션을 이용할 수 있는지 검사 SecurityFilterChain 브라우저가 서버에 데이터를 요청하면 여러 Servlet..