API(Application Programming Interface)란 개발하는데 있어 없어서는 안될 소중한 프로그램중 하나이며 이러한 API는 사용 규격서를 습득하고 사용자는 요청을 관리자는 응답을 통해 상호작용하며 작동된다.
때론 응답과 요청을 모두 처리하는 프로그램을 만들어야할때가 있다. 주로 내부에서 사용되는건 각종 서비스 연동일텐데 그중 하나 예를 들면 회원연동을 들 수 있다. 회원의 경우 단독 사이트에서는 API 연동을 할 필요가 없지만 다수의 사이트에서 하나의 회원으로 통합하여 관리가 된다면 API로 제작하여 연동하는게 좋다.
API의 기초적인 원리만 보면 간단하겠지만 가장 핵심점인 보안이 없다면 단순 놀이터가 될 수 있다. 위의 이미지를 보면 회원 API가 있고 연결되는 A~C사이트들이 있다. 그리고 오른쪽엔 토큰 API가 있는데 이는 유지보수와 보안을 한단계 더 올리기위한 API 서버이다.
사용자는 계정 정보를 이용하여 바로 회원 API 서버에 접근하는게 아닌 인증 키값을 이용하여 토큰 API에 접근 후 토큰을 발급 받아야만 회원 API 서버에 접근이 가능하도록 구성이 되어있다.
흐름도에 따라 A사이트에서 회원 API서버에 접근하는 절차를 설명하면 아래와 같다.
- A사이트에 사용자가 로그인을 한다.
- A사이트는 회원 API통해 계정정보에 대한 인증여부를 판별하고 성공할 경우 토큰 API로 토큰 생성을 요청한다.
- 회원 API는 토큰 API로 부터 받은 인증토큰을 회원정보와 함께 A사이트로 응답해준다.
- A사이트에서는 인증토큰을 이용하여 회원 API에 여러 정보를 요청할 수 있다.
위의 인증 절차를 보면 회원이 로그인 시 최초 인증토큰을 받는 단계로 볼 수 있다. 그리고 이후에는 인증토큰을 이용하여 여러 요청등을 할 수 있게된다.
그럼 두번째로 A사이트에서 최초 인증토큰을 받은다음 활용하는 절차를 보면 아래와 같다.
- A사이트는 발급받은 인증토큰을 이용하여 회원 API 로 회원정보 수정요청을 보낸다.
- 회원 API에서는 해당 토큰이 유효한지 검증하기 위해 토큰 API로 검증 요청을 한다.
- 회원 API에서는 토큰 API로부터 검증 성공 응답을 받을 경우 회원정보를 업데이트 하고 A사이트에 성공여부를 응답한다.
위와 같이 최초 인증 이후에는 발급받은 인증토큰을 이용하여 API에 접근이 가능하다.
잠깐 여기서 `토큰 API가 없어도 자체적으로 생성하여 회원 API와 통신하면 되지 않느냐?` 라는 질문을 할 수 가있다. 물론 사이트에 회원 API만 이용한다면 그렇게 구축을 해도 크게 상관이 없겠지만 쇼핑몰 같은 경우 주문도 있을것이고 배송, 상품, 포인트등 각종 API등이 필요하다. 만약 토큰 API 없이 자체적으로 생성하여 처리한다면 모든 API에 토큰을 저장하고 인증 절차를 거쳐야한다.
그렇기 때문에 이를 하나로 관리할 수 있는 토큰 API가 필요한 것이다. 하지만 수 많은 인증을 토큰 API에서 처리해야 하기때문에 토큰 API 구축이 엉망이라면 있으나 마나인 불필요한 인증이 될 수도 있다. 따라서 구축시 보안과 확장성 그리고 트래픽 유입등을 고려하여 구축해야한다. 또한 인증토큰 만료기간을 무한대로 주면 안되니 유효기간을 적당하게 주는것도 중요하다.
마지막으로 위에서 설명한 API 인증 서버에 대한 내용들은 공통으로 정해진 룰에 따른 절차는 아니다. 인증 API는 운영되는 서비스에 따라 달리 구축 될 수 있으며 서비스 종류에 따라 매번 생성되는 인증 토큰없이 수동으로 부여받은 인증 토큰을 이용하여 지속적으로 인증하여 처리할 수 도있다.
이렇듯 API 인증서버 구축은 어떤 서비스를 운영하느냐에 따라 필요여부를 확인해보고 구축을 해야한다.