티스토리 뷰
길고도 험난했던, MSA였습니다. 어렵다면 어려운 부분도 많았고, 알고있다고 생각했는데 모르는 것들도 많았습니다.
Eureka Server,Client 와 Gateway,Security,LoadBalance,Config 등... 많이 했다고 느끼지만, 첫 걸음이었다는
사실에 놀랍긴합니다. 이제 부터 할 작업은 MSA의 고도화 작업입니다. 기존에 진행했던 작업에 조금 더 고급진 기술을
사용하려합니다. 가장 먼저 할 작업은 대칭키를 이용한 암호화 처리 입니다.
-지금 까지 사용한 프로젝트 파일을 첨부합니다. Part2부터 참조하실 분들은 해당 프로젝트를 확인해주세요.
*해당 압축파일은 WorkSpace입니다. import를 생각하신다면 각 서비스를 import 시켜야합니다.
#bootstrap.yml(Config-Service)
가장 먼저 선행되어야 하는 과정은, Config-Service에 boostrap.yml파일을 추가하는 일입니다.
그리고 다음 과 같이 encrypt.key를 추가해줍니다. 해당 key값은 저희가 대칭키로 지정할 키값 입니다.
encrypt:
key: ggpark0123456789
#간단 TEST
config-service를 재기동 시키고 한번 테스트를 진행해볼까요?
다음과 같이 http://localhost:8888/encrypt 에 POST 타입으로 Body값을 아무거나 임의로 설정 한 뒤
요청을 보냅니다.
그럼 하단의 Body를 통해 암호화가 이루어진 Hello World를 확인 할 수 있습니다.
이번엔 반대로 http://localhost:8888/decrypt를 통해서 복호화를 하려합니다. 마찬가지로
Hello World에 암호화된 문자열을 가져와서 body에 붙혀줍니다.
그럼 다음과 같이 성공적으로 복호화가 이루어졌음을 알 수 있습니다.
#application.yml(user-service)
이번엔 application.yml파일을 조금 수정해야합니다. 기존에 user-service에서 H2 DB를 연결하도록 되어있는데, 사실 조금 불안합니다. 왜냐면 해당 user-service에서는 DB 계정 정보를 출력하고 있습니다. 해당 부분을 주석처리 해주도록 ㅎ할게요.
먼저 해당 내용을 활성화 시키기 위해서 H2-Console에 접속해 DB접속 패스워드를 변경하려합니다.
H2-Console에 접속 후 다음과 같이 쿼리를 날려줍니다.
그럼 다시 본론으로 돌아와 application.yml에서 datasource부분을 주석 처리 해줍니다.
# datasource:
# driver-class-name: org.h2.Driver
# url: jdbc:h2:mem:testdb
# username: sa
# password: sa
#user-service.yml (NATIVE-FILE-REPO)
이제 해당 정보를 Configuration설정 파일에 주입하려합니다. user-service.yml을 열어서 다음과 같이 편집해줍니다.
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testdb
username: sa
password: sa
token:
expiration_time: 864000000
secret: user_token_user_service_native
gateway:
ip: 0.0.0.0
이곳에서 한 것은 그냥 User-Service에 있던 내용을 Natvie-File-Repo에 따로 설정정보에 넣어준 거에요. 근데 여기에 있는 sa가 노출되는것이 너무 싫어서 암호화를 진행하려합니다. 아까와 마찬가지로 encrypt를 URI에 넣어서 sa라는 값의 암호화된 문자열을 받아야 해서 아래와 같이 진행했습니다.
아래와 같이 암호화된 값이 나오는데 해당값을 user-service.yml에 붙혀넣어줍니다. 앞에 {cipher}를 입력하지 않은면
암호화되어있다고 판단을 하지 않아서, 암호화된 문자열을 그대로 받아 들입니다. 꼭 붙혀주세요
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testdb
username: sa
password: '{cipher}8a1f45dcc0896e924cdb3a62e60f0cdd4eedcff88f018b3af4caf663965293b1'
token:
expiration_time: 864000000
secret: user_token_user_service_native
gateway:
ip: 0.0.0.0
다음과 같이 출력되는 것을 볼 수 있습니다. 다만 password는 복호화가 이루어진채로 출력이 됩니다.
해당 경우는 정상적으로 패스워드를 입력했을 경우에만 출력이 됩니다. 그럼 sa가 아닌 다른값으로 암호화된 값을
넣으면 어떻게 될까요?
패스워드 부분을 다음과 같이 변경해줍니다.
password: '{cipher}8a1f45dcc0896e924cdb3a62e60f0cdd4eedcff88f018b3af4caf663965293b1_wrong'
뒤에 _wrong을 붙혀도 되고, 임의로 입력하셔도 됩니다. 다만 알아보기 쉽도록 __worng을 붙혀서 다시 요청을 해볼게요
그럼 다음과 같이 <n/a> 가 나오며 해당 password는 사용할 수 없다는 메시지가 출력됩니다.
이렇듯 오늘은 대칭키를 사용한 인증방법을 알아봤습니다. 다음 포스팅에서는 비대칭키를 사용한 인증방법을 알아보겠습니다.
감사합니다.
'웹 프로그래밍 > MSA 학개론' 카테고리의 다른 글
[MSA] RestTemplate를 활용한 MSA 서비스간의 통신 - 1 - (0) | 2022.04.27 |
---|---|
[MSA Part2] 비대칭키를 이용한 암호화 처리를 통한 고도화 작업 (0) | 2022.04.26 |
[MSA]Spring Cloud Bus을 이용한 Configuration 설정 -1- (0) | 2022.04.26 |
[MSA] Native File Repository 핥아먹기 (0) | 2022.04.26 |
[MSA]Spring Cloud Bus을 이용한 Configuration 설정 ( Rabbit MQ, Elrang ) -0- (0) | 2022.04.25 |
- Total
- Today
- Yesterday
- prometheus
- 운동
- Gateway
- zipkin
- Feign
- 운동일기
- 빅-오
- JWT
- 오늘저녁 삼겹살
- Logstash 활용
- springcloud
- Kafka Connect
- producer
- elasticSearch
- config
- MariaDB
- kafka
- Spring + ELK
- github
- UserService
- rabbitmq
- MSA
- Logstash to ElasticSearch
- ACTUATOR
- 루틴기록
- docker
- LoadBalancer
- 미래의나에게동기부여
- consumer
- git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
26 | 27 | 28 | 29 | 30 | 31 |