728x90
반응형

IT 41

Front-end, Back-end, Keycloak 연결에 대한 정리

테스트 환경 1. Front-end - React, Swagger-UI 2. Back-end - SpringBoot - Spring Security Keycloak Adapter 3. Keyclaok 4. 인증방식 OIDC Bearer, JWT 사용 프로세스 1. 아래 그림은 타 시스템에서의 프로세스를 정리한 그림입니다. 세부적인 프로세스 1. Front-end 에서 로그인 버튼 클릭 (Keycloak 과 연결 설정이 되어있어야 함) 2. Keycloak Login 페이지 호출 및 로드 3. 로그인 수행 4. 인증이 필요한 Back-end API 호출 - HTTP Header 에 Bearer 인증타입의 암호화된 토큰(JWT)을 포함하여 API 호출 수행 (즉, Credentials 을 헤더에 넣어서 전송..

IT/보안 2021.08.23

Forward, Redirect 간단하게 정리

Forward 웹 브라우저는 다른 페이지로 이동했음을 알 수 없음 (그렇기에 브라우저는 최초 호출한 URL 이 표시되고, 이동한 페이지의 URL 정보는 알 수 없다) 현재 페이지와 forward 에 의해 호출될 페이지는 request, response 객체를 공유함 Redirect 웹 브라우저에게 다른 페이지로 이동하라고 명령을 내림 (브라우저는 URL을 지시된 주소로 바꾸고 해당 주소로 이동함) 이동된 페이지에서는 request, response 객체가 새롭게 생성됨

IT/스프링부트 2021.07.15

Java 직렬화(Serialization) 와 역직렬화(Deserialization)

직렬화의 기능적 의미 public interface Serializable { } Serializable 의 인터페이스를 보면 메소드가 하나도 없다. 구현해야 할 메소드가 없는데 왜 있는것일까? 개발을 하다 보면 아래와 같은 경우가 존재합니다. 생성한 객체를 파일로 저장할 일이 있을 수도 있습니다. 저장한 객체를 읽을 일이 생길 수도 있습니다. 다른 서버에서 생성한 객체를 받을 일도 생길 수 있습니다. 이럴 때 꼭 필요한 것이 Serializable 입니다. 우리가 만든 클래스가 파일에 읽거나 쓸 수 있도록 하거나, 다른 서버로 보내거나 받을 수 있도록 하려면 반드시 이 인터페이스를 구현해야 합니다. ** Serializable 인터페이스를 구현하면 JVM에서 해당 객체는 저장하거나 다른 서버로 전송할 ..

IT/Java 2021.07.14

HTTP MIME 타입 정리

MIME type , Content type 이란? MIME 타입은 클라이언트와 서버간의 요청과 응답에 대한 문서의 다양성을 알려주기 위한 메커니즘이다. 웹에서는 파일의 확장자는 별 의미가 없어 각 문서와 함께 올바른 MIME 타입을 전송하도록 설정하는 것이 중요하다. 이 MIME 타입은 HTTP 헤더인 Content-Type 에 작성한다. MIME 타입 구조 type/subtype 형태로 사용한다. 대소문자를 구분하지 않으며, 일반적으로 소문자를 주로 사용한다. MIME 타입의 예시 MIME 타입의 목록 https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types MIME 타입의 전체 목록 - HTTP | MD..

IT/네트워크 2021.07.14

웹 주요 보안 취약점 정리

서론 OWASP (The Open Web Application Security Project, 오픈소스 웹 애플리케이션 보안 프로젝트) 는 웹에 관한 정보누출, 악성파일 및 스크립트, 보안 취약점 등을 연구하며, 10대 웹 애플리케이션의 취약점 (OWASP TOP10) 을 발표했다. 가장 최근 발표인 2017년 기준 OWASP TOP 10 에 대한 내용과 더불어 CORS, CSRF, XSS, CSP 에 대한 내용도 해당 페이지 다룬다. 본론 1. OWASP Top 10 Overview (2017) A1 Injection (인젝션) SQL, OS, XXE(Xml eXternal Entity), LDAP 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분으로써, 인터프리터로 보내질 때 발생한다..

IT/보안 2021.07.07

스프링부트 웹소켓 리뷰

특징 1. 최초 접속시 http request 를 통해 핸드쉐이킹을 과정이 있고, http request 를 그대로 사용하여 동일한 포트사용 - CORS 적용, 인증 등을 http 와 동일하게 사용할 수 있다 2. 프로그램을 종료하거나 브라우저를 닫으면 disconnect 호출 3. 개발자도구에서 주고받은 메시지 기록을 볼수있다. 4. 기본적으로 ServerEndPoint 어노테이션으로 인해 Bean 생성이 불가 (해도 null 로 초기화됨) 5. 신규 클라이언트가 연결되어도 이전 기록은 받지 못한다. 웹소켓 구현방식? 1. 톰켓 기반 2. 스프링 기반 3. sockjs, stomp, socketio 차이는 미지원 브라우저나 언어를 커버하기 위해 많이 사용된 라이브러리이다. 후기 SSE에 비해 비동기 통..

IT/네트워크 2021.06.28

SSE (Server Sent Events), Websocket 리뷰

SSE 특징 HTTP 통신으로 이루어진다. 서버에서 클라이언트로 푸시에 사용된다. 브로드캐스팅으로 모든 클라이언트에게 푸시된다. (클라이언트 UUID 나 세션정보 등을 통해 유니캐스트나 멀티캐스티 방식으로도 사용가능) 후기 웹소켓에 비해 비동기 통신 속도가 느렸다. 새로고침하면 이전 메시지를 다시 받을수 없다. 브라우저 종료, 새로고침 등에 따른 처리가 필요하다. 프로그램을 종료해도 포트가 열려있음 (타임아웃 시간인지 어떤 기준으로 인해 어느정도 시간지나면 포트도 닫음) sub 연결이 타임아웃되면 pub 을 해도 메시지를 받을 수 없다. 기타 (확인하지 않았지만 이렇다고함) content-type : application/event-stream EventStream의 최대 개수는 HTTP/1.1 사용시 ..

IT/네트워크 2021.06.28

서버 확장 관련 내용 (작성중.)

Ubuntu 20.04 기준 작성한 글 데몬 로그 출력 journalctl -u docker.service -f 타임존 변경 sudo timedatectl set-timezone 'Asia/Seoul' 설치된 패키지 확인 dpkg -l | grep PACKAGE_NAME 패키지로 설치된 파일 검색 dpkg -L 서비스 재시작 sudo systemctl restart SERVICE_NAME 파일서버에서 도커 볼륨을 NFS 마운트로 사용 하기위한 디렉토리 지정 (아래는 파일서버에서 설정) vi /etc/export exportfs -ra (/etc/export 파일 변경사항 적용) exportfs -v (변경사항 확인) volume nfs mount (도커랑 무관하게 NFS 볼륨 마운트) 마운트: sudo ..

IT/서버 2021.06.17

MariaDB 콘솔 접근 시 Access denied for user ... Error 1698 (28000)

mariadb console 에 root 로 접근 시 패스워드 인증방식에 의해 접근이 안될수가 있다. 이는 mariadb 특정 버전 이상부터 권장되는 인증방식이여서 초기 설치시 기본으로 설정되어 있었다. root 계정의 password plugin 이 mysql_native_password 가 아닌 unix_socket 인지 아래 쿼리로 확인해보자. select * from mysql.user; unix_socket 방식으로 되어있다면 console 접근 시 아래와 같은 방법들로 접근이 가능하다. sudo mysql su root -> mysql 즉 "unix_socket 방식은 간단히 말해서 OS 의 계정으로 인증을 하겠다는 것" 이었던거 같다. 시간이 지나서 잘 기억은 안나는데 정확한것은 직접 알아보..

IT/트러블슈팅 2021.06.17

postgreSQL 데이터베이스, 스키마, 사용자, 롤 관리를 위한 쿼리

postgreSQL 13.3 버전 기준으로 작성된 글입니다. psql 콘솔 접근 sudo su - postgres psql 혹은 psql -U USER_ID -d DB_NAME psql console 에서 사용할 수 있는 커맨드 -- psql console cmd \du -- 사용자별 Role 조회 \l -- db 정보 조회 \dn -- 스키마 조회 \dt -- 테이블 조회 데이터베이스, 스키마, 사용자, 롤 관리 쿼리 -- 데이터베이스 관련 (스키마보다 상위 범주의 개념) CREATE DATABASE db_name OWNER user_id; -- 데이터베이스 생성 DROP DATABASE db_name; -- 데이터베이스 삭제 SELECT * FROM pg_database; -- 전체 데이터베이스 조회..

728x90
반응형