본문 바로가기
이커머스 (E-Commerce)/자사몰

02. 쇼핑몰 앱 개발과 우커머스 api 연결하기

by lody.park 2024. 5. 13.

안녕하세요 로디입니다.

 

최근에 저는 중개 서버 없이 직접적으로 우커머스에서 제공하는 rest api를 연결해서 모바일 쇼핑앱을 만들고 있는데요.

 

우커머스 rest api는 기본적으로 OAuth1.0 인증방식을 제공해주고 있습니다.

 

여러 해외 블로그와 유튜브등 해외 자료에서는 관리자 권한으로 admin key를 발급 받아 클라이언트 앱에서 이를 사용하게 하더라구요..

또, 모바일 앱에서는 인증, 인가시에 JWT 토큰을 일반적으로 사용하기 때문에, JWT 발급 기능을 위한 별도의 플러그인을 추가해줬습니다.

 

JWT 플러그인의 경우 플러그인을 설치만 할 것이 아니라 플러그인에서 요구하는 일부 코드 스니펫을 php 파일에 삽입 해줘야했습니다.

 

2가지에 대한 설정이였는데,

JWT 암호화와 복호화에 사용하기 위해 php서버가 지니고 있을 시크릿 키와

CORS 를 허용하는 설정 코드였습니다.

 

시크릿키만 지정하여 파일에 코드를 단순히 추가하면 되는 문제였지만, 

저는 이미 워드프레스와 mysql 을 각 각 컨테이너로 오케스트레이션해서 구동하고 있었습니다.

 

따라서 구동중인 컨테이너 내부에 직접적으로 접근하기 위해 /bin/bash 쉘을 연결하고 설정 파일을 찾아 수정했습니다.

수정 사항을 반영하기 위해서는 컨테이너를 재시동해야했는데, 다행히 컨테이너간의 의존관계가 재시동해야할 워드프레스 -> DBMS(Mysql) 단방향이라

워드프레스 컨테이너만 재시동하기만 하면 아무 문제가 없습니다. 

 

테스트 단계인지라, 컨테이너를 단순히 구성해서 다행이지만, 나중에 골치아파지지 않으려면 

프로덕션 환경에서는 기본적인 초기세팅과 의존 관계를 처음부터 잘 설정해야겠다는 생각이 들었습니다.

 

하지만 JWT 연결이후 우커머스의 리소스에 대한 접근 권한에서 문제가 생겼습니다.

 

클라이언트에서 로그인, 유효성 검증, 재발급은 정상적으로 이뤄지나 admin이 아닌 일반 유저로 jwt를 발급 받아 리소스에 접근하면,

리소스에 대한 접근 권한이 없어 상품 목록등을 조회할 수가 없었습니다.

 

상품은 이해하지만 유저개인정보는 리소스 오너인 유저가 접근 권한이 없다는게 참 이상했습니다.

 

이유를 찾고자 리서치를 엄청했습니다. 근데 우커머스 자체가 한국에서는 카페24에 밀린지 오래이기에... 한국 개발자들의 경험을 찾기는 힘들었고, 해외에서도 자료를 찾기는 쉽지는 않았습니다.. (세계 e커머스 호스팅 점유율의 탑3안에 드는 솔루션인데 ,,, 찾는데만 한참 걸리네요 ... 너무 개발하기 힘듭니다...🥹)

 

그나마 찾은 자료들에서는 admin 권한을 가지는 consumer key 와 consumer secret을 모든 요청에서 사용하던데...

사용자 앱이 admin 키를 넣어 개발한다면 보안 이슈가 발생합니다.

( 이게 노출되는 순간 악의적 결제와 회원정보 유출등 .. 한순간에 교도소 콩밥 먹을 생각에 아찔합니다.. )

 

 

https://github.com/Tmeister/wp-api-jwt-auth/issues/144

 

JWT on Woocommerce cannot work with "Customer" role user · Issue #144 · Tmeister/wp-api-jwt-auth

I developed mobile apps, that connect directly to woocommerce rest api directly. I used this plugin for authenticating, like registering and login, make an order , etc. So the issue come, when I re...

github.com

 

 

 

------

JWT 인증 플러그인

https://wordpress.com/ko/plugins/jwt-auth

 

JWT Auth – WordPress JSON Web Token Authentication 플러그인 — WordPress.com

 

wordpress.com

https://greyjeong.medium.com/how-to-customize-woocommerce-rest-api-response-fab1ce3ee63c

 

How to customize Woocommerce REST API response

Complete guid to customize Woocommerce REST API

greyjeong.medium.com