| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 야구게임
- 가변인자
- 25가지 효율적인 sql작성법
- 자바 야구게임
- 추상클래스
- 전체
- 자바
- Login with OAuth Authentication
- 다운캐스팅
- 업캐스팅
- jquery
- while
- 로또
- 이클립스
- 스프링
- Random
- Validations
- IBatis procedure
- 상속
- angular2
- full text indexing
- Full text
- 상속예제
- 전자정부
- 페이징
- 전체텍스트
- 다형성
- 형변환
- 단축키
- Today
- Total
목록2020/02/18 (30)
nalaolla
이번 시간에는 인증서버와 리소스 서버간에 토큰 인증시 서명 방식을 변경해 보겠습니다. 서명이란 서로간에 신뢰성있는 통신을 하기 위한 절차라고 생각하면 됩니다. 최신 소스는 GitHub 사이트를 참고해 주세요. https://github.com/codej99/SpringOauth2AuthorizationServer.git https://github.com/codej99/SpringOauth2ResourceServer.git 대칭키 서명 A(리소스서버)가 B(인증서버)에게 데이터를 보낼때 B의 sign으로 암호화 해서 보내면 B는 자신의 sign으로 데이터를 복호화해서 볼 수 있습니다. B는 데이터를 전달받기 전에 A에게 자신의 sign정보(비밀키)를 공유해주기만 하면 됩니다. 그런데 이 방식은 B의 sig..
이번 장에서는 Spring Oauth2를 이용한 ResourceServer(api서버) 구축을 실습해보겠습니다. 이전 장에서 만든 AuthorizationServer와 연동하여 실습은 진행됩니다. 실습은 bearer 토큰 방식부터 진행합니다. 최신 소스는 GitHub 사이트를 참고해 주세요. https://github.com/codej99/SpringOauth2ResourceServer.git bearer token Flow 아래 내용 중 테두리를 친 부분이 리소스 서버에서 개발해야 할 사항입니다. Authorization Server 수정 이전 시간에 만들었던 AuthorizationSever 내용을 수정합니다. Oauth2AuthorizationConfig에서 bearer token방식으로 테스트 하..
앞 장에서는 테스트를 위해 메모리에 정보를 올려놓고 테스트하였으나, 이번에는 DB를 사용해 처리할 수 있도록 개선해 보겠습니다. 최신 소스는 GitHub 사이트를 참고해 주세요. https://github.com/codej99/SpringOauth2AuthorizationServer.git 클라이언트 정보를 DB 사용하는 방식으로 수정. 로그인 시 회원 정보를 DB 사용하는 방식으로 수정. 인증 및 토큰 정보를 DB 사용하는 방식으로 수정. 클라이언트 정보를 DB 사용하는 방식으로 수정. resources 아래에 schema.sql 파일을 생성 후 다음 쿼리를 넣습니다. 해당 테이블은 클라이언트 정보를 넣는 테이블입니다. 서버가 start 될 때 해당 schema.sql에 내용이 있으면 실행됩니다. cr..
Spring 프레임웍에서 제공하는 Oauth2 프로젝트를 이용하여 Oauth Authorization Server를 구축해 보겠습니다. Oauth Authorization은 클라이언트가 서비스 제공자로부터 회원 리소스를 제공받기 위해 인증 및 권한 부여를 받는 일련의 절차라고 보면 됩니다. 이를테면 페이스북이나, 구글, 카카오톡 등이 대표적인 서비스 제공자인데요. 해당 서비스에 로그인하고 제휴한 앱에 회원정보 접근을 승인하는 과정을 제공하는 것이 Authorization 서버입니다. 즉 이번에 실습하는 것은 클라이언트가 아니라, 페이스북 같은 서비스 제공자를 만들어보는 실습이라고 보면 됩니다. authorization 서버의 인증 타입은 총 4가지가 있으며, authorization_code 타입이 가장..
이번 장에서는 지금까지 만든 웹소켓 채팅서버를 실제 서버에 올려보는 실습을 하겠습니다. 실습 내용은 다음과 같습니다. 서버에서 Executable Jar로 Websocket 채팅서버를 실행 CertBot을 설치하여 무료 SSL 인증서 발급 Nginx의 ReverseProxy를 이용한 WSS( WebsocketSecure ) 구축 실습 환경 AWS Freetier EC2 인스턴스 Amazone Linux AMI(CentOs) 설치 Java 설치 ( 8~11 ) 필요 요구 사항 이번 실습은 실제 도메인을 필요로 합니다. 필자는 godaddy(https://kr.godaddy.com/)에서 daddyprogrammer.org 도메인을 이미 구매하여 사용하고 있는 상태이므로 서브도메인 chat.daddyprog..
이번 장에서는 채팅방의 기능을 좀 더 고도화하는 실습을 진행하겠습니다. 기존 채팅방에서는 메시지 전달이 무조건 클라이언트에서 서버 측으로 전달된 후에 처리되었는데요. 이번에는 서버에서 처리할 수 있는 메시지와 클라이언트에서 처리할 수 있는 메시지를 구분하여 좀 더 효율적으로 프로세스를 개선해 보겠습니다. 그리고 채팅방 입장 시 클라이언트의 숫자를 표시할 수 있도록 기능을 추가해보겠습니다. 채팅방 입장/퇴장시 알림 메시지를 서버에서 처리하도록 개선 채팅방 입장/퇴장시 인원수 표시 채팅 메시지는 현재 ENTER(입장), TALK(대화) 두 가지 타입을 가지고 있습니다. 여기에 QUIT(퇴장)을 추가하여 총 3가지 타입을 사용하도록 합니다. 그리고 채팅방에 메시지가 전달될 때 인원수 정보도 포함되도록 하여 실..
이번 장에서는 SpringSecurity와 Jwt를 이용하여 Web 및 Websocket의 보안을 좀 더 강화하고. 기존의 복잡한 로직을 간소화하는 작업을 진행해 보겠습니다. 크게 아래의 3가지 작업을 진행하겠습니다. SpringSecurity를 통한 로그인 및 간단한 회원 정보 연동 Jwt Token을 이용하여 websocket 통신 보안 강화 Redis Topic 공유를 통한 메시지 전송 프로세스 간소화 간단하게 요약하면 채팅과 관련된 웹페이지의 접근권한은 SpringSecurity를 통해 통제합니다. 즉 로그인한 회원만 채팅 화면에 접근 가능하도록 처리합니다. 그리고 WebSocket 연결 및 메시지 전송은 Jwt 토큰을 통해 통제합니다. Websocket 접속이나 메시지 전송 시엔 헤더에 유효한 ..
앞 장에서 실습을 통해 채팅을 구현해 보았습니다. websocket과 Stomp를 이용한 구현만으로도 채팅의 기본 기능은 충분히 구현할 수 있는 것을 확인할 수 있었습니다. 하지만 서비스에 사용하려면 좀 더 쓸만하게 변경이 필요합니다. 앞장에서 만든 채팅 서비스는 몇 가지 문제가 있습니다. 서버를 재시작 할때마다 채팅방 정보들이 리셋됨 채팅방의 메인 저장소가 없으므로 서버의 메모리에 적재된 채팅방은 서버를 재시작할 때마다 초기화되는 이슈가 있습니다. DB를 이용하거나 다른 저장소를 이용하여 채팅방이 계속 유지되도록 처리가 필요합니다. 여기서는 Redis를 저장소로 이용해 보겠습니다. 채팅서버가 여러대이면 서버간 채팅방을 공유할수가 없음 현재는 채팅방을 websocket과 Stomp pub/sub를 이용하..
이전 장에서 websocket을 통하여 간단한 서버/클라이언트 통신을 구현해 보았습니다. 메시징 방식을 잘 정의한다면 websocket만으로도 충분히 좋은 서버/클라이언트 소켓 서버를 완성할 수 있습니다. 하지만 단순한 통신 구조로 인해 Websocket만을 이용해 채팅을 구현하면 해당 메시지가 어떤 요청인지, 어떻게 처리해야 되는지에 따라 채팅룸과 세션을 일일이 구현하고 메시지 발송 부분을 관리하는 추가 코드를 구현해 줘야 합니다. 이번 장에서는 Websocket의 프로세스를 좀 더 고도화하고 메시징에 좀 더 최적화된 방식을 구현하기 위해 Stomp를 적용해 보겠습니다. Stomp Stomp는 메시징 전송을 효율적으로 하기 위해 나온 프로토콜이며 기본적으로 pub/sub 구조로 되어있어 메시지를 발송하..
Spring에서 제공하는 Websocket을 이용하여 간단한 채팅 서버를 구현해 보도록 하겠습니다. 일반적인 http통신을 하는 서버들과 달리 채팅 서버는 socket통신을 하는 서버가 필요합니다. 통상적으로 http통신은 Client의 요청이 있을 때만 서버가 응답하고 연결을 종료하는 단방향 통신입니다. 따라서 클라이언트가 서버에 접속해 콘텐츠를 요청하고 결과를 받아 소비하는 구조의 서비스에서 많이 사용됩니다. 그에 반해 socket통신은 Server와 Client가 지속적으로 연결을 유지하고 양방향으로 통신을 하는 방식입니다. 주로 채팅 같은 실시간성을 요구하는 서비스에서 많이 사용됩니다. Websocket Websocket은 기존의 단방향 HTTP 프로토콜과 호환되어 양방향 통신을 제공하기 위해 개..