
OAuth 2와 SSO의 차이에 대해 알아보자.(SSO에 대해 궁금하다면 해당 링크를 참고하자.) 둘 다 인증(Authentication)과 인가(Authorization)를 처리하는 기술이지만,목적과 범위, 사용 방식에서 차이가 있다.항목OAuth2SSO목적리소스 접근 권한 위임(Authorization)한 번의 로그인으로 여러 시스템 접근(Authentication)사용 주체제3자 애플리케이션 (클라이언트)사용자 중심인증 처리 여부직접적인 인증 처리 없음 (OpenID Connect 필요)인증 중심예시Google Drive를 통해 다른 앱에서 내 파일 접근 허용회사 인트라넷 로그인 한 번으로 이메일, 결재시스템 자동 로그인 🔐 OAuth2란?권한 위임(Authorization Delegation) ..
(Single Sign-On)란한 번의 로그인으로 여러 시스템 또는 서비스에 접근할 수 있도록 해주는 인증 방식이다. 사용자가 처음 한 번 로그인하면, 이후 별도의 로그인 없이 연동된 다른 서비스들도 자유롭게 이용할 수 있다.예 : Google 계정에 로그인하면 Gmail, YouTube, Google Drive 등 다양한 Google 서비스에 다시 로그인할 필요 없이 바로 접근 가능 🔁 흐름 및 동작 방식1. 사용자가 애플리케이션(A)에 접근 → 로그인 필요2. 사용자가 SSO 서버(인증 서버)에 리디렉션됨3. 사용자 인증 (아이디/비밀번호 입력)4. SSO 서버가 사용자에게 토큰 또는 세션을 발급5. 사용자 브라우저가 이 토큰으로 A에 접근 허용6. 이후 사용자가 애플리케이션 B에 접근하더라도, 이..

Spring Security를 사용하다 보면 인증된 사용자 정보를 조회할 때 SecurityContextHolder.getContext().getAuthentication()을 자주 사용한다.하지만 이 SecurityContext가 Thread-safe 하지 않기 때문에Spring Security의 내부 동작 원리를 바탕으로 알아보고 멀티스레드 환경 또는 비동기 작업시 어떻게 관리하는지 알아보자. 1. SecurityContext란?Spring Security에서 인증(Authentication) 및 권한(Authorization) 정보를 담고 있는 컨테이너간단히 말해, 로그인한 사용자의 정보를 담고 있는 Thread-local 저장소다.Authentication auth = SecurityContext..

인코딩(Encoding)주어진 입력에 대한 모든 변환Ex) 문자열을 뒤집는 함수 X가 있을 때 x -> y를 ABCD에 적용하면 DCBA가 나온다. 암호화(Encryption)출력을 얻기 위해 입력 값과 키를 모두 지정하는 특정한 유형의 인코딩이다.키를 이용하면 나중에 누가 출력해서 입력을 얻는 함수를 호출할 수 있는지 선택할 수 있다.암호화를 함수로 나타낸 가장 간단한 형식은 다음과 같다.(x, k) -> y x : 입력값, k : 키, y : 암호화 결과 (y,k) -> x 역함수 복호화(Reverse Function Decryption)도 있음.알려진 함수에 키를 이용해 출력에서 입력을 얻을 때 사용 이때 암호화에 쓰는 키와 복호화에 쓰는 키가 같으면 일반적으로 대칭 키라고 부름. 암호화 ((x,k..

모놀리식 아키텍처- 실행 가능한 하나의 아티팩트로 모든 책임을 구현하는 애플리케이션한 애플리케이션이 모든 활용 사례를 충족한다.애플리케이션을 유지 관리하기 쉽게 만들기 위해 책임을 다른 모듈 내에서 구현할 수 있지만 런타임에 한 모듈의 논리를 다른 모듈의 논리와 분리할 수 없다. 일반적으로 확장과 배포 관리를 위한 유연성이 떨어진다. 마이크로서비스 시스템여러 실행 가능한 아티팩트에서 책임을 구현한다.동시에 실행되고 필요할 때 네트워크를 통해 서로 통신하는 여러 애플리케이션으로 구성된 시스템이다확장 유연성은 좋지만 지연 시간, 보안 문제, 네트워크 안정성, 분산 지속성, 배포 관리 등의 어려움이 있따. .

Spring Security 주요 아키텍처를 알아보자.(링크 참조 : https://docs.spring.io/spring-security/reference/servlet/authentication/architecture.html) - SpringContextHolder : 스프링 보안이 인증된 사용자에 대한 세부 정보를 저장- SecurityContext : SecurityContextHolder에서 가져오고 현재 인증된 사용자의 인증을 포함함.- Authentication : 사용자가 인증을 위해 제공한 자격 증명 또는 SecurityContext의 현재 사용자를 제공하기위해 AuthenticationManager에 입력할 수 있다. - GrantedAuthority : 인증에 대해 본인에게 부여된..

📌 문제Hibernate에서 로그를 MySQL처럼 보이게 하기 위해 spring.jpa.properties.hibernate.dialect=MySQL5InnoDBDialectH2 메모리 DB에서 Syntax error in SQL statement 에러가 발생했다.예전에는 이 설정이 잘 동작했는데, 왜 지금은 안 되는 걸까?H2의 버전 변화와 Hibernate Dialect가 어떻게 작동하는지 정리해본다. Spring Boot에서 개발 중, 디버깅을 위해 SQL 로그를 MySQL처럼 출력하고 싶어서 Hibernate Dialect를 다음처럼 설정했다.spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect 그런데..

fun main() { val n = 5 val coins = mutableListOf(3, 2, 1, 1, 9) coins.sort() var target = 1 for (i in 0.. target) break target += coins[i] } println("target = $target")} 처음에는 완전 탐색으로 접근해야하나? 라는 생각이 들었다.(물론 책 카테고리가 그리디 알고리즘이지만 내가 문제를 보고 제일 먼저 드는 생각은 완전 탐색이었다.)target이 1씩 증가하면서 최솟값을 찾아야겠다는 생각 때문에 근데 완전 탐색의 경우N개의 동전으로 만들 수 있는 모든 부분집합을 고려하면 부분집합 개수는 2^N 개N이 최대 1,000개면 최악의 ..

우선 필자가 처음에 작성한 틀린 코드를 공개한다. fun main() { var n = 5 val member = mutableListOf(1,2, 4,3,1) member.sort() var cnt = 0 while(n > 0) { if (member[n - 1] n n = 0 } } println("cnt = " + cnt)} 정리되지 않은 코드이기도 하고 로직자체도 억지로 끼워맞춘 느낌인데 공개하는 이유는여기서 필자가 착각한 부분이 '공포도가 높은 모험가'에게 집착했다는 것이다.'공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참야해야한다.' 는 문제를 읽고 '아..! 공포도 X가 큰 걸 ..
- Total
- Today
- Yesterday
- 이코테
- 해커랭크
- 코드
- ORM
- 정보처리산업기사 공부법
- 22 정보처리산업기사
- Spring Security
- 자바
- JPA
- challenges
- Java
- hackerrank
- 해커랭크 자바 챌린지
- 자바의 정석
- 정보처리 산업기사
- 해커랭크 자바
- 챌린지
- 디버깅
- 나동빈
- LinkedList
- 소스코드
- 그리디
- BAEKJOON
- hackerrank challenges
- queue
- 강의
- 해커랭크 챌린지
- 22 정보처리 산업기사
- 정보처리산업기사
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |