목록2024/02/25 (5)
개발놀이터

클라이언트를 개발하기 전에 한가지 해야할 일이 있습니다. 바로 CAS 인증 서버에 우리가 사용할 서비스를 등록해줘야한다는 것이죠. 우리가 첫번째 시간에 만들었던 services 폴더 기억하시나요? 그곳은 우리가 생성할 서비스들을 관리하는 폴더입니다. 우리는 첫번째 시간에 의존성도 추가했는데 그때 json 기반 registry를 기억하실겁니다. 그것을 이용해 서비스를 json 파일로 등록할 수 있습니다. 프로젝트/etc/cas/services 로 가서 파일을 하나 만들어줍니다. $ vim casSecuredApp-19991.json 자 간단하게 설명드리자면 @class는 Regex 즉 정규표현식을 이용해 서비스를 등록하는 레지스트리를 만들겠다는 뜻입니다. 때문에 serviceId에 맨처음 " ^ " 이것을..

이제 로그인을 하기 위해서 사용자가 있어야겠죠? 가장 간단한 방법은 static한 사용자를 만들면 됩니다. 그냥 하드코딩으로 때려박는거죠. 하지만 이 방법은 생략하도록 하겠습니다. 우리가 본질적으로 원하는 것은 데이터베이스에 존재하는 사용자를 이용해서 로그인을 진행하는 것이니까요. static한 사용자 인증을 패스하고 바로 데이터베이스 사용자를 등록해보도록 하겠습니다. 일단 CAS 서버를 띄웠으니 데이터베이스를 위한 서버를 하나 더 띄우겠습니다. 그곳에서 docker, docker-compose을 내려받아주고 Docker를 이용해 MySQL을 띄웁니다. MySQL 사용자를 만들어주고 외부 연결까지 마치고 나면 준비 끝입니다. 너무 두루뭉술하게 넘어가서 왜이렇게 금방금방 넘어가? 하신다면 아래의 링크를 통..

이전 포스팅과 이어집니다. 바로 HTTPS를 위해 thekeystore를 만들어주도록 하죠. 우리는 먼저 /etc/cas 폴더로 이동해야합니다. 이동해주시구요. 이제 thekeystore를 만들어봅시다. $ keytool -genkey -keyalg RSA -alias thekeystore -keystore thekeystore -storepass changeit -validity 360 -keysize 2048 하지만 이렇게 쓰면 에러가 날겁니다. 우리가 아직 openjdk를 설치하지 않았거든요 ㅎㅎ.. CAS overlay template은 최신 버전인 7.0이 JDK 21을 사용하고 6.6버전까지는 JDK 11을 사용합니다. 때문에 저희는 JDK 11을 설치해주도록 합시다. $ sudo apt-ge..

CAS의 Overview를 보고 오시는 것을 추천드립니다! https://coding-review.tistory.com/475 SSO (부제 : Spring Security CAS) 서로 물리적으로 분리된 서버끼리 사용자의 로그인 상태를 유지하고 싶으면 어떻게 해야할까요? 저는 이 문제 상황에서 제일 먼저 떠오른 것이 상태저장 데이터베이스를 중간에 두는 것이었습 coding-review.tistory.com 포스팅에 들어가기 앞서 Docker와 Docker-Compose에 대한 내용은 포스팅과 어울리지않아 빼도록 하겠습니다. Docker와 관련된 내용은 아래의 링크를 확인해주세요! 또한 AWS에 대한 내용도 생략하도록 하겠습니다. https://coding-review.tistory.com/categor..

서로 물리적으로 분리된 서버끼리 사용자의 로그인 상태를 유지하고 싶으면 어떻게 해야할까요? 저는 이 문제 상황에서 제일 먼저 떠오른 것이 상태저장 데이터베이스를 중간에 두는 것이었습니다. 사용자가 A서버에 로그인하면 쿠키에 간단한 값을 저장합니다. 예를 들어서 회원의 인덱스를 저장한다고 해보죠 그 값을 1이라고 가정하겠습니다. 그리고 동시에 Redis와 같은 캐시, 세션 저장소에 1이라는 값을 씁니다. 만약 B서버에 사용자가 접근하면 쿠키 값을 읽고 회원 인덱스가 존재하니 Redis에 해당 값을 조회해봅니다. 그리고 존재하기 때문에 MySQL과 같은 RDBMS에서 회원을 조회하고 그 값을 토대로 Spring Security에서 제공해주는 SecurityContextHolder에 Authentication..