CAS – 로컬실행/개발환경 만들기

뭔가 괜찮은 것 같으면서도 애매한 오픈소스 프로젝트…
복잡함 때문에 몇 번 사용하려다가 포기 했는데 이번에 인증서비스를 만들면서 다시 사용하려고 한다.

jasig CAS일 때 보고 apereo로 바뀐거 보고… 세번째 정도인 것 같다.
이전에는 기능을 축소해서 직접 개발했었는데

복합인증을 구현하려면 쓰는게 나을 것 같다

경쟁제품

유료 무료 다 포함해서 대강

무료

  • Keycloak
  • CAS
  • JOSSO
  • LemonLDAP
  • Shibbolet ldP
  • OpenAM
  • Gluu
  • https://freeradius.org/

유료

  • Auth0
  • AWS Cognito

기타

  • https://gist.github.com/bmaupin/6878fae9abcb63ef43f8ac9b9de8fafd
  • https://www.gluu.org/blog/gluu-versus-keycloak/

조금씩 특성이 다르긴 하다.

CAS 특징

  • 프로젝트가 굉장히 잘게 나눠져 있다.
    모듈형으로 가져다가 사용하라는 것 같은데…
    의존성이 복잡해서 그렇게 쓸 수가 없다
    도큐먼트는 사용법에 관한 것만 있고
  • 설치형으로 사용하려고 보면…
    cas-overlay-template 라는게 있기는 한데
    기본으로 지원되는 부분을 제외하면 설치형으로 쓸 수 있는건 아니고 거의 소스레벨에서 수정해서 써야만 한다.
  • 스프링을 매우 잘 쓴다. 나도 스프링 꽤 써봤다고 생각했는데 처음보는게 조금씩 보인다
  • Springboot autoconfigure 사이의 엄청난 충돌이 발생
    실행형으로 만들게 아니라면 그냥 없애야 하지 않을까

어쨌든 소스레벨에서 분석해서 사용해야 하고
필요한 부분만 뽑아쓰긴 힘들어 보인다

설치방법

소스

docker 컨테이너를 제공 해 주면 좋겠는데…. 커스텀을 해서 쓰라는 철학을 가지고 있는 애들이라 그런지 통짜로 제공 해 주지는 않는다.
그래도 쓰기 편하게 템플릿이 제공된다.

https://github.com/apereo/cas-overlay-template

이런것도 제공 해 주고 많이 발전했다.

아래 순서대로 치다보면 뭐가 뭔지 알 수 있을거다. README.md와 비슷하지만 약간 다르다.

설정파일 수정

docker-compose 실행테스트를 해야되서 설정파일을 수정 해 준다

실행

화면수정

수정가능 항목의 목록을 얻는 명령어

템플릿을 소스코드로 가져오는 명령어

기능수정

이쪽 철학이 그런가보다. 디비를 직접 관리하거나 하지 않는다.
그럴거면 jpa 연동하기 쉽게 인터페이스를 달아주던가 하면 좋을텐데 그런건 또 안해놨다.

트리거 설정

각 기능이 실행될 때 마다 앞뒤로 트리거를 달 수 있다.
인터셉터
groovy

아직 안해봐서잘 모르겠지만 할 수 있다.

배포

리버스 프록시 사용

요즘 리버스 프록시 안쓰는 경우가 더 드물지 않을까

결론

overlay template 설치하려면 keycloak, gluu 등 다른 쉬운걸 쓰는게 나을것으로 보인다
인증방식은 어차피 다 표준프로토콜이 있어서 한두개 빼고는 다 비슷하게 제공된다

소스레벨에서 사용하려면 cas를 쓰는게 나을까… 그냥 만드는게 나을까
아직 시작단계라 정확하지는 않지만
이걸 쓰기보다는 필요한 부분 소스만 참고해서 따로 만들게 될 것 같다

REF

  • https://apereo.github.io/2019/01/07/cas61-gettingstarted-overlay/
  • https://apereo.github.io/cas/6.3.x/configuration/Configuration-Server-Management.html
  • https://apereo.github.io/2018/01/05/cas-deployment-with-proxy/

State Machine libray

상태관리

프로그램을 만들다 보면 상태가 중요한 요소일 경우가 많은데
회원의 상태, 프롯스의 상태
상태를 변경하기 위한 동작들
기존 상태 메모리에 로드, 디스크 저장 등등

별도로 관리하지 않고 디비에서 가져와서 한개씩 처리하면서 트랜잭션 거는거도 가능하지만
실수가 잦다

그래서 하나 만들어볼까 하다가 찾아보니 잔뜩 나와서 일단 정리

REF

  • https://statecharts.github.io/
  • https://kentcdodds.com/blog/implementing-a-simple-state-machine-library-in-javascript
  • https://github.com/davidkpiano/xstate
  • https://github.com/Ankzz/easyfsm/
  • https://github.com/hekailiang/squirrel

Ruby On Rails App – 시작하기

철지난 루비온 레일즈

별 생각이 없다.. 그냥 해봄

어플리케이션 생성

스타터킷이 있기는 한데 다 너무 오래됐다. 마지막 업데이트가 5년~7년…
그 때 부터 안쓰기 시작했나보다
그래도 아직 현역인데… 이렇게까지 인기가 없을까

  • https://github.com/prismicio/ruby-rails-starter
  • https://github.com/mattbrictson/rails-starter
  • https://github.com/RailsApps/rails-devise-pundit

필수 환경 설치

rbenv 2.6.5 bundle rails

필수 라이브러리

  • https://github.com/heartcombo/devise
  • https://github.com/rspec/rspec-rails
  • https://github.com/varvet/pundit
  • https://github.com/thoughtbot/factory_bot_rails

명령어 실행

그리고 코드생성

쉽게 프로젝트를 생성할 수 있는게 장점인데
노드가 더 쉬워서 자리를 뺏긴 느낌이다.

전문가용 터미널 셋팅

개발자는 터미널이 간진데
텍스트 편집할 때 emacs까지는아니라도 vim정도는 써 줘야된다.
근데 이게 기본형으로 쓰면 또 각이 안나와서 추가기능을 깔아주고
다른사람 자리에서 vi쓸 때 이게 왜 안돼? 같은 대사도 해 주고 해야된다

그러기 위한 몇가지 추가기능

Terminal

  • zsh
  • oh-my-zsh

리눅스나 맥이면 이정도는 이미 깔려 있어야되고
윈도우라고 빼먹으면 안된다.

  • oh-my-pysh

오히려 여기에다가 리눅스 터미널까지 설치 해 줘야된다

  • cygwin
  • ubuntu18.04 WSL

그리고 추가로 터미널 유틸

  • https://github.com/junegunn/fzf

VIM

에디터

  • nvim
  • vim

플러그인 관리

  • https://github.com/junegunn/vim-plug
  • https://github.com/VundleVim/Vundle.vim

에디트 툴

  • https://github.com/neilagabriel/vim-geeknote
  • https://github.com/jeffkowalski/geeknote

이정도 깔아두면 이제 어디가서 전문가 행세하기 충분하다.
내 노트북을 가지고 강연/강의/세미나를 할 때 부끄럽지 않을 최소한의 환경

MongoDB 4.0 to AWS DocumentDB 3.6 migration 기록

mysql, aurora정도로 호환되는 제품인 줄 알았는데

스펙을 보니 다른점이 상당히 많다.
https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/mongo-apis.html
아니요가 너무 많은거 아니요?

처음 접속할 때 부터 애를 먹었다. public access가 안된다고???

AWS의 불친절함이란.. .어디 잘 써 있지도 않고

루비온레일즈 개발자가 AWS를 설계했으면 이렇지 않았을텐데
(친절한 루비의 에러메시지)

공식 문서에서 시키는대로 한 것 같은데 접속이 안되서 인증서 사용을 중지시키고 접속했다
https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/connect-from-outside-a-vpc.html

쓰는 사람이 없는건지 검색도 잘 안되는군

AWS 직원새끼도 이거 안쓰는거 아닐까

파라미터 그룹에서 TLS를 끄고 겨우 접속은 했는데

admin으로 접속이 안되네?

test로 접속해봤더니 된다

그 다음에 test2로 접속했더니 된다

근데 test2로 접속하면 test1이 아show dbs부터 안먹힌다??

아니군 데이터가 있는 디비만 목록에 뜬다

이래저래 하다가 너무 이상한 것 같아서 포기..

결국은 몽고디비를 설치해서 사용

그래도 직접 구성은 안 하고 aws에서 지원 해 주는 cloud formation을 활용했다
https://docs.aws.amazon.com/ko_kr/quickstart/latest/mongodb/step2.html

그냥 실행했더니 실패???왜??

바로 클릭해서 접속했떠니 북부 버지니아로 접속되는군.. 어째 이상하더라고
aws 콘솔에서 안 쓰는 리전 꺼놓는 기능은 언제 나올건가

그러고보면 aws에서 대부분의 관리 기능들이 cloud formation을 확장한 정도 기능 아닐까 싶을 정도로.. 비슷한 프로세스로 돌아가는 것 같다.

ui를 따로 만들어주면 관리형 서비스가 돼 버리는거겠지

docuemntDB를 갖다버리고 mongoDB를 관리형으로 넣어주는건 어떨까

하려다가 다시 DocumentDB를 사용하기로

설치가 어려운건 아니지만 나중에 관리비용도 상당히 있으니까

그리고 기존 어플리케이션(node-mongoose)을 돌려보니까 별 문제없이 돌아간다. 4.0에 특화된 기능을 쓰는게 없어서 그런가?

백업 덤프에서 버전을 안 맞췄더니 아예 안된다. 에러메시지가 버전이 안맞다가 아니라 이상한게 안된다고 해서 한참을 검색을 했는데… 버전문제였다.
mongodump(4.x) – mongorestore(3.6)

docker 덕분에 간단히 해결됐다.
docker run –rm -it -v $(pwd):/mongobak mongo:3 mongodump –out /mongobak –host x.x.x.x -uUser -pPass –db dbname

버전이 안맞아서 인덱스나 뭐가 날라갈 수 도 있다고 하는데 나중에 생성 해 주면 되지 않을까

몽고디비 툴 사용

몽고해커 http://tylerbrock.github.io/mongo-hacker/
http://mongodb-tools.com/

코딩 취업학원? 추천을 한다면

이름은 언급을 못하겠고 좆만한 학원들 패스
인터넷이나 지식인에 영업사원이 답변다는 학원은 자동패쓰

  • 비트컴퓨터
  • 쌍용정보 어쩌고
  • 삼성멀티캠퍼스

요 세개가 오래된 쓸만한 학원이고

요즘 소규모 부트캠프?라고 운영하는데가 있는 듯 한데.. .신뢰도는 잘 모르겠다.

  • 코드노바?
  • 코드스테이츠?

정부에서 지원되는 6개월짜리 돈주고 교육해주는 곳
월30만원 용돈도 줌
최악은 아닌듯 한데 강사수준이나 커리큘럼은 정보부족
구디쪽에 관련 기관이 좀 있다…

그리고 새로생긴 쓸만한 기관은