커넥터를 추가하는 데는 항목 네 개와 1분 남짓이면 되는데, 거의 모든 사람이 같은 한 곳에서 막힙니다. 클라이언트가 어떻게 인증할지 묻고 OAuth와 요청 헤더를 내놓지만, 정답은 아무도 예상하지 못하는 세 번째 선택지, 곧 “없음”입니다.
왜 없음이 맞는가
키는 이미 주소 안에 있습니다. 그 주소를 향한 커넥터는, 그 URL을 가진 사람에게 이미 열려 있는 문을 향한 것이므로, OAuth가 주선할 일이 남아 있지 않습니다. 그래도 OAuth를 고르면 클라이언트는 끝내 응답하지 않을 인가 서버를 찾아 나서고, 베어러(bearer) 헤더를 더하면 요구하지도 않은 서버에 두 번째 자격 증명을 보내는 셈입니다.
보안을 우회하는 지름길이 아닙니다. 보안 전체를 한곳, 곧 주소로 옮겨 놓은 것입니다. 주소는 눈으로 보고, 복사하고, 붙여 넣고, 폐기할 수 있는 것이지, 세 당사자가 제대로 구현했다고 믿어야 하는 흐름이 아닙니다.
대신 신경 쓸 곳
- 주소를 자격 증명으로 다루세요. 실제로 그렇기 때문입니다. 주소는 클라이언트 안에만 있어야 하고 다른 곳에는 없어야 합니다 — 공유 문서에도, 설정 화면 스크린샷에도.
- 원한다면 클라이언트마다 하나씩 발급하세요. 키를 폐기하면 그 키 위의 커넥터만 중단됩니다.
- 어시스턴트의 일이 하나라면 범위가 좁은 주소를 쓰세요. 받은편지함을 읽기만 하는 커넥터는 실수로 LinkedIn에 게시할 수 없습니다.
- 하나라도 유출되면 즉시 폐기하세요. 폐기는 즉각적이고, 새 키를 발급하는 데는 1초면 됩니다.
답의 나머지 절반
열린 주소를 감당할 수 있는 것은, 그 뒤에 있는 것이 스스로 조심스럽게 만들어져 있기 때문입니다. 캠페인은 한 턴에 하나의 액션만 하고, 그날의 예산은 이미 수행한 액션을 바탕으로 계산합니다. 내 이름이 붙는 것은 내 승인을 기다립니다. LinkedIn의 일시 중지는 다시 시도해 제한에 이르게 하는 대신 일시 중지로 받아들입니다. 주소를 가진 어시스턴트라도 1분에 스무 가지를 내 계정에 시킬 수는 없습니다. 여기에는 그럴 수 있는 것이 아무것도 없기 때문입니다.
이 글에서 한 줄만 기억한다면 이것입니다. 클라이언트가 인증 방법을 물으면 “없음”이라고 답하고, 헤더는 비워 두세요.
자주 묻는 질문
클라이언트가 없음을 고르지 못하게 하면 어떻게 하나요?
그렇다면 그 클라이언트는 신원 확인이 아니라 헤더를 요구하는 것이므로, 키는 대신 그곳에 넣습니다. 경로에 키가 없는 순수한 주소와 함께 X-API-KEY에 넣으세요. 쓸 만한 클라이언트는 모두 없음을 제공하며, 제공하지 않는 것은 대개 오래된 빌드이니 업데이트하는 편이 빠릅니다.
키는 전부 하나로 쓸까요, 각각 둘까요?
클라이언트를 둘 이상 쓴다면 각각 하나씩 두세요. 비용이 들지 않고, 대시보드에는 각 키를 마지막으로 쓴 시각과 함께 목록이 나오며, 하나를 폐기하면 커넥터 전부가 아니라 하나만 중단됩니다.
키를 폐기하는 순간 무슨 일이 일어나나요?
그 키 위에 만든 모든 것이 즉시 응답을 멈춥니다. 폐기된 키를 가리키는 채 남은 커넥터는 도구가 없다고 보고하는데, 이는 주소를 잘못 입력했을 때 나오는 보고와 같습니다. 그러니 의도해서 폐기하고, 무엇이 고장 났는지 찾아 나서기 전에 대체 키부터 발급하세요.