손을 벌벌떨며 식은땀 흘리고 긴장하면서 올린 첫 이슈
나는 비전공으로 대학교를 다니고 있다.
우연히 접한 피신을 기회로 42서울을 다니며 여러 프로젝트를 경험하다가,
22년 7월에 중소기업에 인턴으로 들어갔다.
회사에서 FIDO 솔루션 프로젝트를 진행하게 되었고, FIDO의 스펙을 알기위해 공식 문서를 들여다보며 어떤 보안인증인지 공부를 하게 되었다.
내가 할 일은 LINE에서 인증받은 FIDO WebAuthn 오픈소스를 분석하는 일이였다.
분석이 생각보다 빠르게 끝나 개발팀으로 들어가게 되었다.
22년 8월 우리 회사는 FIDO 인증을 받기 위해 WebAuthn 구현을 하고 있었다.
Node.js를 사용하였고, SimpleWebAuthn 라이브러리를 이용하였다.
해당 라이브러리에서는 FIDO를 인증받기 위해 필요한 것들이 대부분 구현이 되어있는 것처럼 형태를 갖춰있었고, 당연히 모든 테스트가 통과할 것으로 예상하고 있었다.
그런데 몇몇 테스트가 통과하지 않았고, 실패 이유를 찾던 와중 SimpleWebAuthn 라이브러리 내부에서 예외를 발생시켜 실패하는 사유들을 찾을 수 있었다.
LINE에서도 업데이트를 따로 하지 않아서 이 테스트가 동작하지 않아 더이상 LINE 오픈소스 코드는 의미가 없어졌고, 우리가 직접 어떤 오류인지 찾아야하는 상황이였다.
인증 성공을 해야하는데 예외를 던져서 테스트가 실패한 케이스이다.
중복되는 인증서라는 오류가 발생했으며, SimpleWebAuthn 라이브러리에서 발생한 것임을 확인할 수 있었다.
이때 고민에 빠졌다.
SimpleWebAuthn은 이슈도 많고, PR도 많은 만큼 많은 사람들의 손을 타고 만들어진 라이브러리인데, 정말 이 라이브러리가 문제인 것일가?
우리가 활용을 잘못한 것일까? 아니면 FIDO 테스트가 문제가 있는 것일까?
해답을 얻기 위해 FIDO측에 문의를 올렸다.
FIDO에서는 엔지니어까지 연결을 해주었고, 해당 엔지니어의 답은 이렇다.
SimpleWebAuthn 라이브러리의 최신 버전(5.4.2)을 사용하면 테스트가 통과할 것입니다.
이후에 버전을 올려보았으나, 결과는 똑같았다.
그도 그럴게, 각 버전들의 내용을 살펴보면 인증서 관련글이 없었다.
이후에, 오류에 관한 내용을 직접 찾아 FIDO로 다시 한번 메일을 보냈다.
그리고 FIDO 본사가 해외에 있어, 새벽에 답장이 와서 이렇게 하루에 한번씩 답장을 받는것은 기간에 맞추기 힘들것같고 비효율적이게 보여, 그날은 답장을 바로바로 보내기 위해 퇴근후 일찍 자고 새벽에 일어나 메일을 계속 확인하였다.
그러나, 바빠서 그런지 아니면 답을 찾지 못해서 그런지 답장이 오지 않았고 착잡해졌다.
지푸라기라도 잡는 심정으로 출근전에 FIDO 커뮤니티에도 글을 올리고, SimpleWebAuthn 라이브러리 담당자에게 직접 메일을 보냈다.(다행히 본인 블로그에 메일을 따로 남겨놔서 보낼 수 있었다.)
그리고 마냥 기다릴 순 없으니 라이브러리를 직접 수정해야겠다는 결정을 하고(이미 다른 팀원들은 수동으로 고치면서 테스트를 진행하고 있었음), 고쳐야하는 부분을 찾고 있을때, SimpleWebAuthn 담당자에게 메일이 도착했다.
해당 내용을 깃허브 이슈에 올리면 해결에 도움이 될거 같아요. 올려주실 수 있으세요?
깜짝놀라 다시 확인해봤는데 깃허브 이슈에 올려달라는 답장이 온 것을 확인할 수 있었다.
오픈소스에 이슈를 올리는 것은 처음 해보는 일이라 구글링도 해보고, 글을 쓰면서도 이게 맞는지 확인을 몇번이나 반복했다. 다른사람이 어떻게 올렸는지도 계속 확인하고, 회사 동료에게도 봐달라고 부탁했다.
그렇게 나는 이슈를 달게 되었다.
https://github.com/MasterKale/SimpleWebAuthn/issues/246
완료 버튼 눌렀을때 정말 손떨면서 눌렀다.
이후에 시간이 좀 지나니 바로 답장이 왔다.
덕분에 테스트를 손쉽게 해결할 수 있었다. 라는 내용이였다.
정말 극도로 놀랐다. 내가 오픈소스에 기여를 한 것이다. 당일 새벽에 잠을 못자서 힘들었는데, 이 답장을 받자마자 잠이 확 달아났다.
더 욕심이 나기 시작했다. 이 코드를 내가 고치고 싶었다. 이후에 라이브러리를 더 자세하고 깊게 보고, 어디 부분이 틀렸으며, 인증서를 어떤 경우에 넘어가야하는지 찾아 코드를 고치고 PR까지 날렸다.
담당자에게 메일을 보낼때조차 조마조마했다. 이게 맞나? 싶은 생각이 몇번이나 들었고, 이슈, PR 전부다 올릴 때마다 두근거렸다.
내가 올린 PR은 결국 참고만 하고 더 이쁜 코드로 라이브러리에 추가되었다.
이슈는 올려도 안받아주는 곳도 많다고 들었는데, 담당자가 직접 이슈로 올려달라는 말을 듣는 것도 너무 좋았다.
이후에 내가 올린 이슈를 해결한 새로운 버전이 업데이트 되었다.
정말 몇 없는 큰 경험을 했다.
slee2님 짱!