목록분류 전체보기 (26)
두리공장
스프링부트에서 keycloak admin restapi 를 사용해야 할 경우가 있다. (사용자 계정에 대한 정보 변경 등등...) 나의 경우에는 사용자가 등록한 OTP 정보를 admin cli 를 사용하여 삭제해 주어야 하는 미션이 있었다. 몇몇 방법이 있지만 구글링 결과 키클락에서 제공하는 라이브러리를 사용하기로 했다. (순수 restapi를 구현하여 사용하는 방법도 있디만,,,ㅎㅎ) 1. pom.xml 에 디펜던시 추가 org.keycloak keycloak-admin-client 20.0.5 2. application.yml 에 접속정보 추가 keycloak: server-url: http://localhost:9080/ realm: master username: admin password: XXX..
ELK 를 구성하여 RDBMS 에 있는 데이터를 logstash 로 pipeline 을 셋팅하여 저장해 보기로 한다. 먼저 ELK 를 설치해야 하는데, docker 로 설치한다. docker repo : https://github.com/deviantony/docker-elk GitHub - deviantony/docker-elk: The Elastic stack (ELK) powered by Docker and Compose. The Elastic stack (ELK) powered by Docker and Compose. - GitHub - deviantony/docker-elk: The Elastic stack (ELK) powered by Docker and Compose. github.com W..
SPI 를 사용하면서 외부DB의 Custom Role을 적용하고 싶어졌다. 하지만 github 에는 아래와 같은 문구가 있었다. Limitations - Do not allow user information update, including password update - Do not supports user roles our groups 지원을 안한다고 해서, 그냥 쓸수는 없지 않은가.... 그래서 직접 구현해 보기로 했다. 인터넷에 찾아보니 UserAdapter 에서 getRoleMappings 를 오버라이드해서 추가 구현이 가능함을 볼 수 있었다. 그래서 아래와 같이 추가해 보았다. public class UserAdapter extends AbstractUserAdapterFederatedStora..
지난번에 singular-keycloak-database-federation 를 사용하여 keycloak 에서 external Database 를 연결하는 것을 시도해 보았다. 동기화는 잘 되었는데 user 에 보면 create at 부분이 "invalid Date" 라고 뜨는 문제가 있다. 여기에 날짜를 정상적으로 보여주기로 했다. UserAdapter 는 AbstractUserAdapterFederatedStorage 를 상속하여 사용하는데, 이걸 열어보면, public static String FIRST_NAME_ATTRIBUTE = "FIRST_NAME"; public static String LAST_NAME_ATTRIBUTE = "LAST_NAME"; public static String EM..
SSO 연동을 위해 keycloak을 사용할 경우가 있다. 그런데 대부분의 경우에는 user DB에 사용자를 등록해 놓고 user 정보를 연동하기를 원할 것이다. 이 경우에는 keycloak 에서 제공하는 provider 를 사용하여 외부 DB 와 연동할 수 있다. 아래는 연동 프로세스를 표현한 다이어 그램이다. keycloak 에서 연동을 위해서는 Service Provider Interface 를 구현해야 한다. 해당 스펙에 대해서는 keycloak 공식문서에 잘 설명되어 있지만,, https://www.keycloak.org/docs/latest/server_development/#_user-storage-spi Server Developer Guide This functionality depend..
Nifi 를 사용하여 원천 DB에서 수집DB로 데이터를 복제하는 방법을 연구해 본다. setMaxValue : QueryDatabaseTable 프로세스를 사용하며, 원천테이블에 있는 데이터를 읽어서 해당 필드중에 가장 큰 값을 셋팅하는 역할을 한다. 일반적으로 수정일자(lsdt) 를 셋팅해 놓으면, attribute 에 해당 값이 설정되며, 더 큰 값이 보여지기 전까지는 재수집을 하지 않는다. getData : ExecuteSQL 프로세스를 사용하며, 원천테이블에 있는 데이터를 가져온다(Avro 포맷) truncateDeployTable : PutSQL 프로세스를 사용하며, 수집/적재할 테이블의 데이터를 삭제(초기화) 한다. insertData : PutDatabaseRecord 프로세스를 사용하며, ..
필요에 따라서는 VO를 계속 만들지 않고 innerClass를 사용하는 경우가 있다. innerClass 는 아래의 형태와 같다. @Data public class CommonVO { @Getter @Setter public static class BOOK { private String column1; private String column2; private String column3; private String column4; } } 그런데, mybatis에서 이러한 모양의 모델을 불러와야 할 경우에, alias가 안먹는 경우가 있다. 이때에는 아래와 같이 정의해 준다. 이렇게 하면, mapper에서 아래와 같이 사용할 수 있다. 여담으로, RestAPI로 사용할 경우, 필드값에 null이 있을 경우 ..
스프링 부트로 개발된 back-end 에 스프링 배치를 이식해야 할 경우가 생겼다. 이렇게 하려면, 아래와 같은 순서로 셋팅해야 한다. 1. pom.xml 에 의존성 추가 (dbcp 포함) 2. application.yml 에 db connection 정보 추가 3. DataSourceConfig, VO 추가 4. 시작 지점에 스케줄러 추가 5. JobConfig 구현 (Job, Step, tasklet, ItemReader, ItemWriter)... 순서대로 셋팅해 보자 pom.xml 에 의존성 추가 (dbcp 포함) org.springframework.boot spring-boot-starter-batch commons-dbcp commons-dbcp 1.2.2 org.springframework...