반응형

메이븐 웹방화벽 삽질기에 대해서 공유합니다.


결론부터 말씀드리며, 문제의 원흉은 바로 전자정부 프레임워크 maven repository 입니다.


pom.xml 에서 repositories 를 아래처럼(코드1) 설정하고 사용하고 있었습니다.

사실 local-lib를 먼저 등록하고 egovframe을 나중에 등록했습니다.

egovframe 을 등록하기 전에 로컬의 jar 파일들이 모두 잘 인식되어서 로컬의 메이븐 레파지토리에 잘 저장되어 있었습니다.

그런데, egovframe 등록후 한참 후에 새로운 로컬 jar 를 등록하려고 하니 계속 jar파일이 정상이 아니라고 오류가 뜨는 겁니다.

로컬의 메이븐 레파지토리에 저장된 jar를 까보았더니 (코드3)와 같은 내용으로 되어있었습니다.

잉? 왠 웹방화벽?

Jenkins를 통해 원격 빌드 후 배포하는 프로세스 였기 때문에 사용중이던 서버에 뭔가 웹방화벽이 추가된 줄 알고 여기저기 전화하고 삽질을 좀 했습니다.


그런데 나중에 오류 로그를 좀더 자세히 살펴보니 (코드4) 와 같이 내가 로컬 라이브러리로 지정한 녀석이 전자정부 레파토리에서 다운로드를 성공한 겁니다.


느낌적인 느낌으로 알수 있었습니다.


로컬에서 읽어가야 할 라이브러리를 전자정부가 레파지토리가 404나 400대의 오류를 내지 않고 200으로 받아주면서 response만 웹방화벽 오류를(정확히 코드 3) 찍어주고 있으니 메이븐이 알수가 있나 ㅡ,.ㅡ . 


그래서 해결책으로 (코드1)의 레파지토리 순서를 전자정부 레파지토리를 가장 아래로 내렸더니 해결이 되었습니다.


Spec의 중요성을 다시 한번 느꼈습니다.


Http Status Code를 좀 지킵시다.



(코드1)

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
  <repositories>
    <!-- 전자정부 프레임워크 -->
    <repository>
      <id>egovframe</id>
      <url>http://www.egovframe.go.kr/maven/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <!-- DO NOT set id to "local" because it is reserved by Maven -->
      <id>local-lib</id>
      <name>In Project Repo</name>
      <url>file://${basedir}/lib</url>
      <layout>default</layout>
    </repository>
    <repository>
      <id>oracle</id>
      <name>ORACLE JDBC Repository</name>
      <url>http://maven.jahia.org/maven2</url>
    </repository>    
  </repositories>
cs


(코드2)
1
2
3
4
5
    <dependency>
      <groupId>eai</groupId>
      <artifactId>jdom</artifactId>
      <version>1.0</version>
    </dependency>
cs


(코드3)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@TEST /home/jenkins/.m2/repository/eai/jdom/2.0.6]# cat jdom-2.0.6.jar
<br>
<br>
<center>
<h2>
The request / response that are contrary to the Web firewall security policies have been blocked.
</h2>
<table>
<tr>
<td>Detect time</td>
<td></td>
</tr>
<tr>
<td>Detect client IP</td>
<td></td>
</tr>
<tr>
<td>Detect URL</td>
<td></td>
</tr>
</table>
</center>
<br>
cs



(코드4)

[WARNING] The POM for eai:ILinkAPI:jar:1.0 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
Downloading: http://www.egovframe.go.kr/maven/eai/jdom/2.0.6/jdom-2.0.6.pom
310/310 B   
[WARNING] Checksum validation failed, expected <br> but is ed3486b6e3ec3d28a2acb83e454c57ad33a93098 for http://www.egovframe.go.kr/maven/eai/jdom/2.0.6/jdom-2.0.6.pom


반응형

+ Recent posts