반응형

Spring Jasypt 설정으로 DB 정보 암호화


DB 정보 암호화 설정 4단계

1. Spring 설정 xml 파일에 설정 구문 추가

2. 프로퍼티스(properties) 해당 DB 정보 추가

3. Maven pom 파일에 <dependency> 구문 추가

4. Spring 설정중 dataSource 값 properties 값으로 처리 추가


1. Spring 설정 xml 파일에 설정 구문 추가

<bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">  

        <property name="algorithm" value="PBEWithMD5AndDES" />  

        <property name="password" value="BRACE_PASS" />

</bean>

<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">  

        <property name="config" ref="environmentVariablesConfiguration" />  

</bean>  

<bean id="propertyConfigurer" class="org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer">  

        <constructor-arg ref="configurationEncryptor" />  

        <property name="locations">  

            <list>  

                <value>[파일위치]/dbinfo.properties</value>

<value>[파일위치]/db2info.properties</value>

            </list>  

        </property>  

</bean>

 스프링에 설정 파일 servlet-context.xml 파일등에 위와같이 설정 구문을 추가 하면 됩니다.

<property name="password" value="BRACE_PASS" /> 부분에 value 값은 암호화 키를 설정한 것이다.

<property name="algorithm" value="PBEWithMD5AndDES" />  알고리즘은 DES로 할것임을 알 수 있다.

일반적으로 보통 패스워드는 단방향 암호화를 사용합니다. 하지만 위에 설정된 MD5는 양방향 암복호화가 가능 합니다.

복호화시에는 위에 설정된 키값을 이용해서 확인이 가능합니다.


2. 프로퍼티 DB 정보 설정

1번 설정 정보있는 <value>[파일위치]/dbinfo.properties</value>

위 설정된 위치에 dbinfo.properties 파일을 생성하고 UTF-8 방식으로 파일을 저장합니다.

프로퍼티 내용은 "key = value"와 같은 양식으로 작성합니다.

예를 들어 설정한 값은 아래와 같습니다.

db.driver = org.mariadb.jdbc.Driver (드라이버)

db.url = jdbc:mariadb://192.168.0.100:3306/testdb (접근주소)

db.username = testuser (접근계정)

db.password = ENC(Yl2wdgxnrY9C%4ddQzDzjCMXXdw/lHUNm)

password 값 ENC() 안에 있는 값을 생성 또는 확인하기 위해서는 

http://www.jasypt.org/download.html 사이트에 들어가서 다운로드받은 뒤 확인 할 수 있는데

최신 버전은 1.9.3 버전으로 2019.05.25로 갱신된것 같습니다.

DOWNLOAD JASYPT (from GitHub) 를 클릭하여 GitHub에서 다운로드 받을 수 있습니다.

콘솔에서 암호화 값을 확인하려면 jasypt-dist 를 확인하시면 됩니다.

GitHub에서 프로젝트를 다운받아 설정하는데 어려움이 있는 분들을 위해서 압축된 파일을 같이 첨부합니다.

jasypt-1.9.2-dist.zip

해당 파일을 다운로드 받아 압축해제 하시고 사용하면 됩니다.

cmd 창에서 압축해제한 폴더로 이동하여 윈도우에서 bat 파일을 실행하면 됩니다. 

명령어는 아래쪽에 정리되어 있습니다. 


3. Maven pom 파일에 <dependency> 구문 추가

GitHub 주소(https://github.com/jasypt/jasypt) 페이지로 들어 가보면 알수 있지만

다양한 프레임워크에서 사용이 가능합니다. 

그중 Spring3으로 설정하는 부분을 예로 들겠습니다.

<dependency>  

    <groupId>org.jasypt</groupId>  

    <artifactId>jasypt-spring3</artifactId>  

    <version>1.9.3</version>  

</dependency>

POM.xml 파일에 추가하면 됩니다.


4. Spring 설정중 dataSource 값 properties 값으로 처리 추가

Spring DB dataSource 설정 부분에 아래와 같이 설정 합니다.

servlet-context.xml 파일등에 같이 설정 할 수도 있습니다.

위 1번에서 선언한 프로퍼티 파일에서 선언된 값을 ${} 방식으로 호출하여 사용합니다.

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">

<property name="driverClass" value="${db.driver}" />

<property name="url" value="${db.url}" />

<property name="username" value="${db.username}" />

<property name="password" value="${db.password}" />

</bean>


dist 에 있는 sh파일 기능및 명령어 간편정리

listAlgorithms : 사용가능한 암호화 알고리즘 리스트를 보여줍니다.

    DIGET, PBE 2가지 리스트로 알고리즘이 구분되어 확인 할 수 있습니다.

[실행]

C:\>listAlgorithms

digest : 입력값(input)과 알고리즘(algorithm)을 변수에 값을 입력하여 암호화

         DIGET 알고리즘만 가능합니다.

[실행]

C:\>digest input="test123" algorithm="MD5"

encrypt : 입력값(input),키값(password),알고리즘(algorithm) 변수에 값을 입력하여 암호화

  PBE 알고리즘만 가능합니다.

  password는 <property name="password" value="BRACE_PASS" /> 이유가

  설정에서 password 설정부분이 키값이 되는 이유입니다.

[실행]

C:\>encrypt input="test123" password="BRACE_PASS" algorithm="PBEWithMD5AndDES"

decrypt : 입력값은 암호화 된값으로 받아 값을 디코딩하여 확인 할 수 있습니다.

  encrypt와 동일한 방법으로 명령어만 decrypt를 사용합니다.

[실행]

C:\>decrypt input="Yl2wdgnrY9C+4dn" password="BRACE_PASS" algorithm="PBEWithMD5AndDES"


반응형
반응형

봄 숲속의 소녀 Spring forest girl 

[Free stock video 프리라이센스 무료 영상 ]

유튜브 시작, 인트로 등등 무료 영상 소스 (free stock video) 

CC0 라이센스 (Free License)  라이센스 걱정없이 사용 가능한 영상 


저작권 라이센스 관련 설명 https://tnsgud.tistory.com/240


온라인으로 동영상 파일크기 줄이는 방법  https://tnsgud.tistory.com/322

DOWN

forest girl.mp4


참 날씨는 완연하게 봄이 왔습니다. 

그러나 찬바람이 아직은 방심을 할 수 없게 만들고 있습니다.

우리는 최근에 영상에서 나오는 숲속을 가본적이 언제일까요?

오늘도 자리에 앉아 화면으로만 

바라보고 있는 것은 있으신 분들이 많을 거라 생각 됩니다.

왜 우리는 같은 세상을 살면서 쉽게 생각하는 것을 

할 수 없는 자리에 있을 까요?

최근에 이런 생각을 좀 해봤습니다. 

언제부터 내시간이 내것이 아니게 되었는지?

그것이 너무도 당연하고

틀린것 하나 없는 세상에서 언제 부터 살고 있는 것인지?

꼭 내가 살아 가기 위해서 내인생을 저당 잡고 있는 것은 

아닌 것인가 생각을 하게 되었습니다.

물론 삶을 살기 위해서 일을 해야 하는 것은 

틀린 말이 아닙니다. 

하지만,

오늘 같이 너무도 날씨가 좋은날 하던 일을 

멈추고 따사로운 햇살 아래서 낮잠이라도 잘 수 있나요?

배부른 소리 한다고 이야기 하실 수 있습니다. 

그것이 당연한 사회의 룰이고 회사와의 계약이 되어 버렸습니다.

여기서 생각을 해봅시다.

이것이 정말 맞는 것인지?

꼭 그래야만 하는 진리인지?

저는 아니라고 생각이 듭니다.

대다수의 사람들이 회사와의 계약으로 하루의 8시간은 

내 시간이 아니게 되어 버린 것입니다. 

계약으로 인해 내시간을 사용하는데 허락과 승인을 받아야 하고

그 댓가로 우리는 돈을 벌고 있습니다. 

나의 하루중 가장 유용한 낮 8시간을 소비해서 말이죠.

왜 그럴까요?

물론 아닌 사람도 있습니다. 

그런사람들은 일반적인 사회생활을 하는 사람들이 대부분 아닙니다.

부자이거나, 학생이거나, 백수일 경우일 겁니다.

최소한의 나의 삶에 안정을 위해 

내 삶의 하루중 8시간을 사용하는 겁니다.

안정감을 위해 포기한 것 들이 얼마나 큰 것인지

우리는 잊고 살고 있습니다. 

인생을 즐기자고 놀자고 이런 이야기를 하는 것이 아닙니다.

삶의 자유에 대해서 이야기를 하고 싶은 겁니다.

삶의 의무를 회피한 자유를 이야기 하는 것이 아닙니다.

다른 사람의 일을 하는 것이 문제는 아닙니다.

아무 이유 없이도 그저 날이 좋기 때문에

가족들이나 사랑하는 사람들과 

아무런 제약없이 쉴 수 있는 삶을 살 수 있어야 합니다.


우리는 어떤 인생을 살고 있는 것일까요?

그리고 내가 내 삶을 선택에서 나의 의지가 얼마나 반영되는 

삶을 살고 있는 것일까요?

생각을 해야 합니다. 

스스로 자유롭게 선택하고 행복하게 살수 있는 삶을

살기 위해서는 우리는 어떻게 해야 할까 생각을 해봅니다.

그리고 실행을 해야 합니다. 


따스한 햇살과 시원하지만 쌀쌀한 바람이 부는 봄입니다. 
우리들의 봄에서 우리 인생의 길이
더 행복해지기를 바라며 몇자 적어 보겠습니다. 

만일 내가 농부라면 
오늘 하루는 나의 삶을 이 행복을 즐길 수 있지 않을까요?


반응형

'영상 소스 (Free Stock)' 카테고리의 다른 글

행운이 넘치는 하늘 빛 gold light sky  (0) 2019.04.17
구독 영상 Subscribed action  (0) 2019.04.08
정보 홍수의 시대 info flood  (0) 2019.03.30
인생 시간 life time  (0) 2019.03.29
삶과 죽음 life and death  (0) 2019.03.28
반응형

봄 꽃 spring flower [Free stock video 프리라이센스 무료 영상 ]

유튜브 시작, 인트로 등등 무료 영상 소스 (free stock video) 

CC0 라이센스 (Free License)  라이센스 걱정없이 사용 가능한 영상 


저작권 라이센스 관련 설명 https://tnsgud.tistory.com/240


온라인으로 동영상 파일크기 줄이는 방법  https://tnsgud.tistory.com/322

DOWN

Spring flower.mp4


벌써 봄입니다.

오늘 만보 걷기를 하다 보니까 벌써 벚꽃이 많이 피어 있더군요

보통은 4월쯤 해서 벚꽃 축제도 있는데

날씨의 영향인지 벌써 활짝 피어 있더 군요

참으로 시간이 빨리 지나가고 있습니다. 

올해도 1분기가 몇일 남지 않았습니다.

물론 아직은 쌀쌀합니다.

여차 하면 감기가 내몸을 노리고 있습니다.

오늘은 자신의 일과 남의 일에 대해서 

잠깐 글을 남겼었습니다.

그리고 산책겸 만보 걷기를 하다 본 벚꽃이 생각이 나서 

영상을 찾아 올려 봤습니다.

벌써 올해의 1/4이 지나갔다는 것이 믿어 지지 않습니다.

하지만 현실을 사실입니다.

오늘 하루를 나를 위해 얼마나 했을까요?

지금 내가 가장 중요한 것이 무었일까?

오늘하루는 lose time 이 많았다고 생각합니다.

나의 대한 일을 전혀 하지 못했고

간단한 일인데도 시간을 너무 소비했습니다.

어제 적었듯이 반성하는 삶을 살기로 했고

데일리 리포트를 작성 하겠다고 했는데,.

현 시간까지 전혀 약속을 해내지 못하고 있습니다.

좀더 빠른 일처리가 필요하고 그렇기 때문에

집중이 아주 절실하게 필요합니다.

내 자신을 위해 집중력이 엄청나게 높아집니다.

우리는 모두 운이 좋습니다.


감사합니다. 고맙습니다.







반응형
반응형

프레임워크(스프링) 구축시 자주 볼 수 있는 한글 처리와 에러 메세지


작업을 하다보면 종종 볼수 있는 메세지를 정리해 봅니다. 

에러 메세지를 볼때면 자주 찾아 보게 되는데 찾아 봤던것이 기억나지 않는 경우도 종종 있다 보니 따로 정리를 좀 해보았습니다. 

프로그래 밍을 하고 싹 돌려봤을때 에러 없이 딱 작동이 되는 그때의 그기분은 참 짜릿합니다.

그런데 테스트를 하는데 딱 하고 에러 메세지가 나오면 한심하기도 하고 순간 짜증이 많이 날때가 많습니다. 

그런데도 불구하고 비슷한 실수를 많이 합니다.  주의 사항이라고 할 수도 있게 몇 가지를 정리해 봣습니다.  


1. 한글이 깨지는 경우 처리 방법


한글 깨짐은 에러는 아니지만 get방식으로 request할 때 한글 깨지는 문제 처리 방법이다.

클라이언트 측 : jQuery에서 한글로된 인자를 넘길 때 encodeURI(encodeURIComponent(value))로 넘긴다.

서버 측 : Controller에서 한글 인자를 받을 때 URLDecoder.decoded(value)로 처리해준다.



2. Invalid bound Statement (not found): Mapper.function


요것도 메시지를 눈여겨 보면 답이 나온다.

문장과 Mapper의 함수가 연결이 안된다는 이야기의 오류 이다. 

바로 Mapper.xml에 있는 쿼리 id와 Mapper.java에 있는 메소드 명이 달라서 발생한 문제다.



3. Mapped Statemets collection already contains value for...

톰캣을 기동하는데 이런 메시지가 나오면서 디플로이가 제대로 안된다면

Mapper에 중복된 설정이 있거나 id명을 실수해서 썼거나 했을 경우가 많습니다. 

특정 Mapper의 Query문 mapping이 잘 안되었을 경우 볼수 있는 오류 입니다.

MyBatis 쿼리 설정 상의 문제 또는 Mapper와 Query 호출 부분이나 쿼리를 테스트 해 보아야 합니다.



4. requestmappinghandlermapping did not find handler method for


요건 메시지 내용대로 request에 대한 mapping이 잘못되어 요청한 리소스를 찾을 수 없다는 뜻이다.

요런 것이 참 별것도 아니면서 시간 잡아먹는 하마다.

문제의 원인은 엉뚱하게 오타나 다른 request parameter를 값을 호출 해놓고는 호출 시 다른 paramater를 호출한 경우 이다.

반응형
반응형

이클립스 스프링 JNDI 설정 방법


프로젝트를 스프링으로 구성 했을때 JNDI로 DB를 접근해야 하는 경우가 있습니다. 

보통 구축이나 운영 프로젝트를 진행 할때 많이들 사용하게 됩니다.

여러 프로젝트에서 하나의 datasource를 공유해서 사용할때 이용됩니다.

마지막으로 load balancing 이 좋다고 하는게 사용자는 체감을 할수는 없을거라 생각 됩니다.


우선 JNDI 설정은 application(웹사이트) 내에 DB 정보를 설정 하여 접근 하는 방식이 아니고 

WAS(톰캣,제우스,웹로직 등)에서 미리 설정 된 [연결정보name]을 호출 하여 접근 하는 방식입니다.


우선 스프링 구성에서 application-config.xml 파일을 열어 봅니다. 

또는 context-datasource.xml 등의 파일 안에 설정이 있습니다.


가장 간단히 찾아 볼수 있는 방법으로는 프로젝트에서 datasource와 jndi로 검색을 해보면 xml 파일에서 설정되어 있는 부분을 찾을 수 있습니다.


일반적으로 다음과 같이 선언 되어 있습니다.

오라클 DB 기준입니다.  


[jdbc 방식]

<bean id="datasource" class="org.apche.commons.dbcp.BasicDataSource">

  <property name="driverClassName" value="oracle.jdbc.OrcleDriver" />

  <property name="url" value="jdbc:oracle:thin:@아이피:포트:SID" />

  <property name="username" value="접속아이디" />

  <property name="password" value="패스워드" />

</bean>


이것을 JNDI로 변경하면 아주 간단하게 바뀝니다. 


[JNDI 방식]

<bean id="datasource" class="org.springframework.jndi.JndiObjectFactoryBean">

  <property name="jndiName" value="JDNI선언이름" />

  <property name="resourceRef" value="true" />

</bean>


연결 정보가 미리 WAS 서버에서 선어 되어 있기 때문에 이름만 호출 해서 사용을 하면 됩니다. 


TOMCAT에서 JDNI로 DB 연결 정보를 설정 하는 방법 다음글로 올리겠습니다. 

 

반응형

+ Recent posts