본문 바로가기
  • Floodnut's Home Directory

분류 전체보기74

[OAuth 2.0 API 보안] JWE를 이용한 메시지 수준 보안 1. JWE Compact Serialization (JWE 콤팩트 직렬화) JWE 콤팩트 직렬화를 사용한 JWE 토큰은 5개의 구성 요소로 이루어진다. 각 요소는 마침표(.)로 구별되며 헤더, 암호화 키, 초기화 벡터, 암호문, 인증 태그로 구분된다. 1.1. JOSE 헤더 JWE 콤팩트 직렬화의 첫 번째 구성 요소다. 기존의 JWS에서 추가된 파라미터가 있다. enc : 콘텐츠 암호화 알고리즘 AEAD(Authenticated Encryption with Associated Data)가 포함된 대칭 인증 암호 알고리즘이 필요하다. JOSE 헤더의 필수 속성이며 포함되지 않으면 토큰 구문 분석 오류가 발생한다. zip : 압축 알고리즘기본 압축 알고리즘은 JWA 사양에 정의된 것을 사용한다. 압축이 필.. 2022. 6. 30.
대학 생활 회고 대학 진학에서 컴퓨터공학과에 진학하는 것을 결정하는 것은 어렵지 않았다. 대학 진학에 있어서 지원한 모든 학과가 컴퓨터공학과, SW 학과와 같은 IT 학과였다. 대학 진학의 과정에서 조금 아쉬웠던 점은 대학의 커리큘럼, 대학의 특성화를 알아보지 못한 것이었다. "IT 전공자"라고 불리게 되는 학과를 희망하긴 했지만 세부적으로 어떤 것에 관심이 있는지는 알려고 하지 않았다. 여기까지는 많은 사람들이 성적에 맞춰서 학교, 학과를 선택하기에 큰 문제는 없을 수 있다. 다만, 지금 생각해보면 IT 계열은 "적성"에 큰 영향을 받는 것 같다. 나는 컴퓨터공학도로 살았기에 컴퓨터공학과만을 안다. 다른 단대, 다른 학과도 물론 적성을 탈 수 있다. 만일 내가 대학 진학을 하는 입장으로 돌아간다면 똑같이 컴퓨터공학과에.. 2022. 6. 29.
[OAuth 2.0 API 보안] JWS를 이용한 메시지 수준 보안 0. JSON 웹 서명을 이용한 메시지 수준 보안 JSON : JavaScript Object Notation 1. JWT의 이해 JWT(JSON Web Token)은 데이터를 전송하기 위한 컨테이너를 정의한다. OIDC가 이 JWT를 사용해서 ID 토큰을 나타낸다. eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c JWT는 세 가지 요소로 구성된다. 각 요소는 Base64url 방식으로 인코딩되고 마침표(.)로 구분된다. 서명 및 암호화(JOSE) 헤더 페이로드/클레임 서명 1.. 2022. 6. 23.
[SpringBoot] Reason: Validation failed for query for method public abstract ... @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract ... 스프링부트에서 JPA를 활용하다 이런 에러를 종종 마주했다. JPA는 함수 명에 따라 쿼리를 동작시켜주는데 종종 직접 작성한 쿼리가 필요할 때가 있다. /* 에러 발생 어노테이션 */ @Query("___MY_QUERY__") /* 수.. 2022. 6. 9.
[OAuth 2.0 API 보안] OpenID 커넥트 (OIDC) 참고할 만한 자료 Microsoft ID 플랫폼 및 OpenID Connect 프로토콜 - Microsoft identity platform OpenID Connect 인증 프로토콜에 대한 Microsoft ID 플랫폼 구현을 사용하여 웹 애플리케이션을 빌드합니다. docs.microsoft.com OAuth 2.0 및 OIDC 정의 Final: OpenID Connect Core 1.0 incorporating errata set 1 openid.net OIDC 핵심 사양 OAuth 2.0 Playground Request Body Manual entry Enter the data that will be added to the body of the request: File You may choose t.. 2022. 6. 7.
[OAuth 2.0 API 보안] API 게이트웨이를 이용한 에지 보안 API 게이트웨이를 이용한 에지 보안 API 게이트웨이는 운영 환경의 배치에서 API를 보호하는 가장 일반적인 패턴이다. API 배치의 시작점이며 중앙에서 인증, 권한 부여, 제한 정책을 시한하는 정책 시행 지점(PEP)이다. 1. Zuul API 게이트웨이 설정넷플릭스 Zuul API 게이트웨이 배치 Zuul은 동적 라우팅, 모니터링, 복원력, 보안 등을 제공하는 API 게이트웨이이다. 넷플릭스 서버 인프라의 최전방에 존재하며 트래픽을 처리 요청 라우팅 개발자의 테스팅과 디버깅 지원 넷플릭스 전반적인 서비스의 상태 확인 및 보호 리전 문제 발생시 리전 이동API 서버 실행 1.1. Zuul API 게이트웨이 실행 org.springframework.cloud spring-cloud-starter-zuu.. 2022. 6. 2.
[백준] 2252 - 줄 세우기 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 백준의 위상정렬 문제 줄 세우기의 자바 풀이다. 위와 같이 순서가 정해져 있고 사이클이 없는 그래프를 정렬하는 알고리즘이 위상정렬이다. "진입 차수"와 "인접 리스트"를 통해서 문제를 해결할 수 있었다. 위의 그림에서 6을 보면 4와 5로부터 진입하는 것을 볼 수 있다. 2개의 노드가 6으로 진입하므로 진입 차수는 2이다. 반대로 1이나 2는 진입차수가 0이다. 인접리스트를 통해 연결된 다음 노드를 저장하고 진입차수가 .. 2022. 6. 1.
[OAuth 2.0 API 보안] - OAuth 2.0 OAuth 2.0에 대해 OAuth 2.0은 OAuth 1.0에 기반을 두었지만 OAuth WRAP(웹 리소스 인가 프로필)의 영향을 크게 받았다. OAuth 1.0은 위임에 대한 프로토콜이고 OAuth 2.0은 인가를 위한 프레임워크이다. 1. OAuth 2.0 💡 OAuth 2.0은 접근에 대한 위임 문제를 담당한다. 외부의 서드파티 애플리케이션이 서비스의 데이터에 접근하고자 한다면 OAuth Provider의 자격 증명을 서드파티 애플리케이션과 공유한다. 이를 통해 서드파티 애플리케이션이 접근 권한을 위임 받을 수 있다. 다만 이 접근 권한의 위임은 서드파티 애플리케이션의 접근을 인정하는 것이기에 큰 문제를 발생시킬 수 있다. 이에 OAuth 2.0은 이 자격증명을 서드파티 애플리케이션과 공유하지 .. 2022. 5. 19.
[OAuth 2.0 API 보안] TLS를 통한 API 보안 1. Order API 확인 스프링부트를 통한 예제 Order API를 이용하여 간단하게 알아보고자 한다. org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-web 예제에서 위 종속성은 각각 다음을 제공한다. 다른 스프링 모듈의 통합을 위한 starter 톰캣과 스프링 MVC, REST 등의 환경과 구조를 제공하는 starter-web 애플리케이션 모니터링 및 관리를 위한 starter-actuater @RestController @RequestMapping(value = "/order") public class OrderProcessing { @RequestMapping(val.. 2022. 5. 19.
[SpringBoot] URL 이미지 반환하기(2) - Redis Caching [SpringBoot] URL 이미지 반환하기 스프링부트를 활용해서 API 서버를 만들면서 이미지가 담긴 URL을 반환해주는 기능이 필요했다. 클라이언트가 서버의 URL로 접근해서 이미지를 요청하면 외부 API의 정적 이미지를 담은 URL을 내 쪽 www.floodnut.com 앞서 구현한 URL 이미지를 캐싱하는 작업을 진행하고자 한다. 우선 캐싱을 진행하고자 한 이유는... 이미지는 외부 API를 통해 요청된다. API 호출 횟수를 줄이기 위해서다. 반복 요청에 대해서 외부 API로의 이미지 요청의 응답 속도를 줄이기 위해서다. 그렇다면 NoSQL인 Redis를 선택한 이유는? Key-Value를 통해 원하는 이미지만 빠르게 반환하기 위해서다. 여러 이미지를 반환한다면 RDBMS가 더 유리할 수도 있.. 2022. 5. 16.