[ DB접근정보 암호화 방법 ]
1. 톰캣 설정에서 DB접속 정보 암호화
순서 : JDNI 설정 -> 접속 정보 암호화
2. 프로젝트 설정에서 DB접속 정보 암호화
순서 : 프로퍼티 파일생성 후 -> Jasypt를 이용해 접속 정보 암호화
1번 방법으로 적용하려고 생각하고 프로젝트 열어보니 프로젝트 내에 DB접속 정보가 있다.
2번 방법으로 실행할 예정이다.
[1] 프로퍼티 파일 설정하기
https://ktko.tistory.com/entry/Spring-properties-%EC%9D%BD%EC%96%B4%EC%98%A4%EA%B8%B0
https://twofootdog.github.io/Spring-Spring-MVC%EC%97%90%EC%84%9C-properties-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/
https://ethank.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-Properties-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%B4%EC%84%9C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
https://royleej9.tistory.com/entry/Spring-properties-%EC%84%A4%EC%A0%95-%EB%B6%84%EB%A6%AC
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=realuv&logNo=220026046838
https://codedragon.tistory.com/7911
에러
- could not load properties nested exception is
- invalid bean definition with name 'datasource' defined in file
- could not resolve placeholder 'spring.profiles.active' in value $ spring.profiles.active
- java.lang.illegalstateexception could not resolve placeholder
설정방법(3)
1) application.properties에서 가져오기
2) 사용자 정의 properties파일에서 가져오기
3) 모든 properteis파일에 정의된 값 가져오기
이 중 원하는 모양으로 설정을 한 후에
자바파일에서 읽어오거나
xml에서 읽어오거나..필요에 따라 다시 선택하면 된다.
또, war나 jar로 묶을 때 개발 프로퍼티를 쓸지 운영 프로퍼티를 쓸지도 설정할 수 있는데
지금은 필요하지 않아서 하지 않았다.
흠.. 추가한 부분은 별로 없었는데 파일 경로 설정을 못해서 시간이 오래 걸렸다.
나는 사용자 정의 프로퍼티를 xml에서 읽어올거다.
<context:property-placeholder> 태그를 사용하여 외부 프로퍼티 파일을 로딩하도록 설정할 수 있다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/beans/spring-context-3.0.xsd>
<!--두 개이상 프로퍼티 사용할 수 있다.(콤마로 구분하여)-->
<!--
<context-property-placeholder location="classpath:config/jdbc.properties, classpath:config/monitor.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destory-method="close">
<property name="driverCalssName" value="${jdbc.driver}">/>
</bean> ....</beans>
<context:property-placeholder> 태그를 사용하려면 위 코드와 같이 context 접두어에 대한 네임스페이스를 http://www.springframework.org/schema/context로 지정하고 네임스페이스와 관련된 XML 스키마 경로를 spring-context-3.0.xsd로 지정해 주어야 한다.
출처: https://devbox.tistory.com/entry/Spring-외부-설정-프로퍼티 [장인개발자를 꿈꾸는 :: 기록하는 공간:티스토리]
-->
[root-context.xml] - 기존 DB연결 정보가 있던 곳
<bean id= "propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="WEB-INF/config/db.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property value="${db.driverclassname}" name="driverClassName"/>
<property value="${db.url}" name="url"/>
<property value="${db.name}" name="username"/>
<property value="${db.password}" name="password"/>
</bean>
[db.properties] - WEB-INF/config폴더 생성 후 db.properties파일 생성 후 내용 작성
db.driverclassname = oracle.jdbc.driver.OracleDriver
db.url = url
db.name = name
db.password = pwd
프로퍼티 파일 위치를 처음에는 /src/main/resource 밑에 config폴더 만들어서 뒀었는데 여기가 잡히지 않았다. 경로에서 /**/config이런식으로 해도 에러는 안났지만 프로퍼티 안에 밸류값을 못 읽어온거 보면 아마 다른 설정이 더 필요했던 것도 같다. root-context.xml이랑 servlet-context.xml에서 경로 설정할 때 넣어봤던 코드들 코드1 ) <beans:bean id="dbPropertyConfigurer" class="org.springframework.beans.facory.config.PropertyPlaceholderConfigurer"> <beans:property name="locations"> <beans:list> <beans:value>classpath:/config/db.properties</beans:value> <beans:value>classpath:/config/db.properties</beans:value> <- 여러개 쓰고 싶으면 여기 추가 </beans:list> </beans:property> </beans/bean> 코드2) <context:property-placeholder location="classpath:/config/db.properties"/> pom.xml 밑에도 추가했었는데 소용없었음. <resources> <resource> <directory>/src/main/resource</directory> <filtering>true</filtering> <includes><include>**/*.properties</include></includes> </resource> <resources> |
[2] 프로퍼티 파일 암호화
Jasypt : Java , Java + Spring , Java + 하이버네이트 등 여러 프레임 워크에서 암복호화를 지원해주는 오픈소스
https://velog.io/@asws1457/Jasypt-properties-%EC%95%94%ED%98%B8%ED%99%94
'차근차근 > Spring' 카테고리의 다른 글
자바 엑셀 생성-암호걸기-다운로드 (0) | 2022.08.12 |
---|---|
jasypt2 (0) | 2022.07.25 |
db접속 정보 암호화 (1) | tomcat | JNDI | DataSource (0) | 2022.06.08 |
스프링 빈(bean) 및 서블릿(servlet) 객체 직접 얻기 출처: https://offbyone.tistory.com/144 [쉬고 싶은 개발자] (0) | 2022.04.29 |
컨트롤러에서 알럿 | controller message alert (1) (0) | 2022.04.27 |