Study

· Study/Spring
이 포스팅은 (1) 스프링 시큐리티 - 알아두어야 할 세 가지 개념과 (2) 스프링 시큐리티 - 스프링 시큐리티 세션에서 이어지는 글입니다. 서론 이전 글에서 세션은 하나의 서버를 운용할 때를 상정하고 나온 개념이라는 전제로 세션을 설명했었습니다. 하지만 서버의 규모와 트래픽이 나날이 갈수록 커지면서 서버를 여러대로 분산시켜야 하는 경우가 비일비재해졌습니다. 서버를 여러대로 분산시킨다는 것은 곧, 여러 대의 서버에서 하나의 세션을 공유해야한다는 전제가 새로 만들어지게 되는 셈입니다. 이것을 어떻게 해결할 수 있을까요? 물론, 세션을 관리하는 인메모리 DB를 가지는 중앙집중식 서버를 하나 두거나, 관련 인증 서버 체계를 두거나 하면 될 것입니다. 하지만 서버를 더 늘려야 하는데 인증 서버를 더욱 더 늘려야..
· Study/Spring
이 포스팅은 (1) 스프링 시큐리티 - 알아두어야 할 세 가지 개념에서 이어지는 글입니다. 서론 세션은 다들 아시다시피 본디 하나의 서버를 운용할 때를 상정하고 나온 개념입니다. 다시 말씀드립니다. 프론트엔드와 백엔드가 하나의 서버에 있을 때 세션을 보통 사용한다고들 말합니다. 저도 처음에 JWT같이 다른 인증 시스템을 만들어 볼 때 혼동이 왔었습니다. 요즘 프론트-엔드와 백-엔드의 서버를 나누다 보니 세션도 나누는 것인가? 하구요. 세션을 개발하기 전에 꼭 잊지 말아야 할 사항이 바로 본디 세션은 하나의 서버에서 운용하도록 설계가 되어졌다 입니다. 이 가정을 바탕으로 글을 쓰도록 하겠습니다. (당연하게도 지금은 여러 서버에서 세션을 운용하는 방법이 있습니다! 레디스같은 하나의 인메모리에서 세션을 관리한..
· Study/Spring
서론 스프링 시큐리티는 아무리 봐도 복잡하게 설계가 되어 있습니다. 각 단계를 추상화하고, 분리하다보니 중간에서 하는 일이 많아지고, 밖에서 접근하는 방법도 달라졌던 것 같습니다. Spring Security는 공부를 해보니 여전히 정말 쉽지 않은 스프링 모듈 중에 하나입니다. `Security`라는 단어에 걸맞게도 복잡하게 이루어진걸지도 모릅니다. 아무튼 공부를 하면서 제가 알아낸 정보들, 공부했던 정보들을 바탕으로 포스팅을 해보려 합니다. 또, 실전으로 연습했던 코드도 포함해서요. 이번 포스팅에서는 일단 간단하게 Security에서 저희가 짚고 넘어가야할 부분들에 대해서 적어보겠습니다. SecurityContext 시큐리티는 시큐리티 모듈의 `SecurityContext` 안에서 인증/인가 정보가 다..
· Study
이 포스팅은 JSON Web Token - 토큰의 구조 에서 이어지는 글입니다. 서론 저번 포스팅에서 JWT를 만들고 검증하는 법에 대해서 살펴보았습니다. 그럼 이번에는 이렇게 RFC로 쓰인 토큰을 어떻게 구현을 해놓았고, 사용을 하면 되는가?에 대해서 중점적으로 이야기를 해보겠습니다. 저는 현재 Java 언어의 Spring 프레임워크를 공부하고 있기 때문에, JAVA 언어로 만들어진 JWT 라이브러리를 살펴보겠습니다. JWT 라이브러리는 당연하게도 수많은 라이브러리가 있고, MavenRepository에서도 어떤 라이브러리들이 있는지 확인해 볼 수 있습니다. 이번 포스팅에서는 흔히들 많이 사용하는 라이브러리인 JJWT 라이브러리를 살펴보도록 하겠습니다. JJWT 라이브러리 깃허브 링크에서 확인해보실 수..
· Study
아래 글은 RFC 7519 를 기반으로 작성되었습니다. 서론 지난 포스팅에서 JWT의 구조에 대해서 알아보았습니다. 어떻게 생겼는지를 알았으니, JWT를 만들고 검증하는 법을 알아보죠. 숟가락 구조를 알고 있다고 해서 숟가락을 만드는 방법을 다 알고 있는 것은 아니니까요! RFC에 따라 JWT를 만들고 검증하는 법 RFC 공식 문서에 JWT를 만들고 검증하는 법이 나열이 되어 있습니다. 암호화나 서명이 되지 않은(Unsecured) 경우와 암호화나 서명명이 된 경우의 2가지로 나누어져 있습니다. 암호화나 서명이 되지 않은 경우 이 경우는 쉽습니다. 헤더 내용을 다음와 같이 채워주면 됩니다. { "alg" : "none" } 위 헤더 내용은 말그대로 알고리즘(alg)이 없다(none)는 뜻을 가지고 있는 ..
· Study
아래 글은 RFC 7519 를 기반으로 작성되었습니다. 서론 세상에는 두 태양이 공존할 수 없다고 하죠... 하지만 인증 세계에는 아직 두 개의 태양이 공존(?)하고 있습니다. 하나는 세션이고 하나는 JWT죠. 필자가 알기로 세션의 개념이 먼저 나왔다고 알고 있습니다. 세션은 쿠키라는 저장소에 담아서 상태를 저장하는 개념으로 나왔었죠. 하지만 이는 독자분들이 아시다시피, HTTP는 무상태라는 개념과 상충하는 바임을 쉽게 알 수 있습니다. HTTP가 무상태이다보니, 서로 간의 상태를 저장해두고 확인하고 싶었겠죠. 저라도 서비스를 저장할 때 이런 정보를 저장해놓고 사용하고 싶을 겁니다. 하지만 상태를 저장하다보니, 세션이 많아질수록 지연 시간이 늘고 성능에 의존하는 일이 잦아졌습니다. 이를 어떻게 해결해야할..
문제 링크 13334번: 철로 입력은 표준입력을 사용한다. 첫 번째 줄에 사람 수를 나타내는 양의 정수 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 n개의 각 줄에 정수 쌍 (hi, oi)가 주어진다. 여기서 hi와 oi는 −100,000,000이상, 100,000,0 www.acmicpc.net 요새 취업 시장에서 그리디 문제가 많이 나온다기에 열심히 관련 문제들을 풀고 있습니다! 👨‍💻 그리디 문제들을 풀다 보면 정렬을 사용하는 그리디와 정렬을 사용하지 않는 그리디가 있고, 여러 자료 구조 중 하나를 선택하여 푸는 그리디가 있는데, 그 중 대표적인 것이 우선순위 큐였습니다. 우선순위 큐를 이용하는 그리디 문제 중에 좋은 문제가 있어서, 하나 포스팅을 해보려고 합니다. 😊 풀이 정렬과 우선순위..
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사실 알고리즘 문제를 하루에 한 문제 이상 풀고 있는데, 포스팅을 하지 않았습니다. 왜냐면,, 요새 스프링 공부를 열심히 하다보니... 포스팅을 하지 않는 대신 스프링 공부에 집중해야겠다고 생각했어요! 😅 10월 초 연휴를 아주 재밌게 즐기고 오고 나서, 문득 오늘 푼 알고리즘 문제라도 포스팅해보자! 하고 생각이 들어서 포스팅하게 되었습니다! 풀이 2차원 바텀업 DP로 풀이했습니다. 이 문제는 사실 전에 풀었던 2096번: 내려가기 문제와 유사한 풀이로 가능합니다. 문제의 내용처럼 경로 중 거쳐간 ..
문제 링크 16946번: 벽 부수고 이동하기 4 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이 www.acmicpc.net 이번 문제는 이전 벽 부수고 이동하기 시리즈 1~3과는 조금 다릅니다. 이전 문제들은 벽을 부수고 지나가면서 최단 경로를 구하는 문제였지만, 이번 4번째 문제는 벽을 부수고 이동할 수 있는 칸의 개수를 세어보는 경우의 수 문제로 바뀌었습니다. 이번 문제는 풀면서 저도 우여곡절이 살짝 있었기에, 그런 우여곡절들을 공유하면서 풀이해보겠습니다. 풀이 DFS로 풀이했습니다. (BFS도 가능) 보통 경우의 수는 백트래킹으로 풀이하는데, 백트..
문제 링크 16933번: 벽 부수고 이동하기 3 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net 링크 : 벽 부수고 이동하기 1 링크 : 벽 부수고 이동하기 2 벽 부수고 이동하기 1과 2에 이어서 3번 문제입니다! 이번 문제도 저번 문제들의 연장선에 있습니다. 저번 문제에서 낮과 밤이 추가됐죠! 이번 문제도 한번 풀어보겠습니다~ 풀이 이전 문제와 마찬가지로 4중배열 VST + BFS로 풀이하면 됩니다. 이전 문제의 DP는 \(k\)(벽을 부술 수 있는 한도)와 \(n, m\)(맵의 행렬 길이)로 풀 수 있었습니..
라페dev
'Study' 카테고리의 글 목록