2022년 4월 28일 목요일

회사 내부망 java javax.net.ssl.SSLHandshakeException: PKIX path building failed

 회사 내부망의 경우 https 의 ssl 변조가 있어 

 java javax.net.ssl.SSLHandshakeException: PKIX path building failed
오류가 발생 한다.

회사에서 제공하는 인증서가 있는 경우 다음과 같이 

java security 에 등록하여 준다.


keytool.exe -importcert -keystore %JAVA_HOME%lib\security\cacerts -storepass changeit -file Company.cer

2022년 1월 10일 월요일

verdaccio docker run with apache proxy

 apache -> docker verdaccio 연동시

invalid host 였나.. 오류가 발생하여 해당 방법 으로 해결 함.


apache virtualhost 의 domain 정보를  

docker 구동 시 env 정보 전달


--env VERDACCIO_PUBLIC_URL=<domain>

verdaccio scoped package 403 error

 - 구성 환경

   -apache -> docker verdaccio


- 오류

  - scoped package publish 중 403 invalid package name 오류 발생.


- 원인

  - apache 에서 proxy 설정으로 연결했는데 전달 과정에서 encoding 되었거나 문제가 있는것으로 보임


- 처리방벙

  - apache 의 virtualhost 설정에 다음 추가

     AllowEncodedSlashes On

     ProxyPreserveHost On


2021년 10월 20일 수요일

CentOS 7 메일 발송 서버 구성

- postfix
  • yum install postfix
  • /etc/postfix/main.cf
- SPF : 국내 whitelist
  • https://spam.kisa.or.kr/integration/main.do
- DKIM : 해외 whitelist
  • 참고 : https://hiseon.me/linux/ubuntu/dkim-settings/

postfix 설치 후
listen ip 확인 후 
mynetworks 에 allow ip 설정 

주의사항.
DKIM 설치 중 도메인에 txt 를 등록 하는 과정이 있다.
몇몇 참고 자료 중 도메인 등록 방법이 약간 부족해 보이는데 다음과 같다
도메인이 example.com 과 같고 keys 의 txt 내용이 
mail._domainkey IN      TXT    
로 시작 한다면
도메인txt 는 mail._domainkey.example.com 에 등록한다.

2021년 8월 29일 일요일

OpenID connection discovery

OpenID 인증 방식을 지원하는 auth server 의 spec 을 확인 하는 주소.

https://server.com/.well-known/openid-configuration

2021년 7월 27일 화요일

swagger codegen 사용시 주의 사항

사용환경

- spring boot + swagger

- swagger codegen

- java



뭐 당연 한 거겠지만 swagger 의 doc 에 정의가 잘못 되어 있으면 생성 했을 때 결과에 문제가 있다.

겪은 문제


1. 서버는 basic auth 를 쓰고 있는데 apiclient 에서  basic auth 를 설정 하고자 하면 애를 먹는다.

   가능은 하지만 뭔가 정석이 아닌것 같고 이상하다.

   이는 apiClient 에서 수정할수 없는 authentication 을 생성하기 때문인데

   본론적인 문제는 doc 에 정의를 안해서 그렇다.

   


      securitySchemas 를 설정해라.


2. 서버에서 return 타입을 설정하지 않아 object 형태로 sdk 가 생성 되고 파싱 과정에서 데이터가 없는것처 럼 보인다. 뭐 당연하겠지만 이것도 doc 이 잘못 생성 되서 그렇다.


느낀점.

이런류의 코드들은 많은 사람들이 공들여 만든 코드다. 실수는 내가 한다. 휴먼 에러는 나다. ㅎㅎ

구글 블로그는 버리자. 코드넣기 힘들다

2021년 1월 15일 금요일

@JsonIdentityInfo 사용시 주의점

Spring 에서 JPA 사용하며 JSON 으로 변환시
Domain 간 양방향 참조를 걸 경우가 있다.

이때 JSON 으로 변환 하며 무한 루프에 빠지는데
이를 방지 하기 위해 
예전 방식

@JsonManagedReference

@JsonBackReference

과 

요즘 방식

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id”)

을 쓰게 된다.


요즘 방식 @JsonIdentityInfo  의 경우 위 예제는 

id 로 중복을 방지하여 무한루프를 방지 하는데


한번의 변환에 같은 아이디가 존재 할 경우 JSON 변환을 하지 않는다.


무슨말이냐 하면..


JSON 변환 하는 과정에서 @JsonIdentityInfo  가 달려있는 도메인의 id 가 1개 이상 있으면 안된다는 것이다.

1개 이상 있으면 변환 과정중 1회 이상의 데이터는 변환하지 않는다.

해당 내용은 @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id”)

형태로 사용했을 경우이고

generator 를 변경하면 가능 할 것 같아 보이긴 한다.


그림으로 설명하기 귀찮아서 글로 적긴 했는데

아무튼 참고해라.



-- 추가 --

@JsonIdentityInfo 는 generator 별로 숫자, 문자, uuid 등으로 키를 생성하여

json변환 중 같은 키가 발견되면 같은 스코프 내에서는 표시 하지 않는다.


내 상황같은 경우를 잘 분석 해보니 데이터 루프 중 1depth 까지만 데이터를 표시하고 이하는 표시 하지 않는것을원한 것으로 분석 됐다.

이를 위해 위에서 언급 한 방식을 사용하지 않고

@OneToMany 어노테이션이 달린 List 데이터 필드 위에

@JsonIgnoreProperties 를 사용하여 해당 필드의 List 데이터 내에 

@ManyToOne 으로 설정 한 릴레이션에서 Json 편환을 하지 않도록 했다.

@JsonIgnoreProperties("auctionCase")

@OneToMany(mappedBy = "auctionCase", fetch = FetchType.LAZY)

private List<Research> research;