저는 보안에 중점을 둔 대형 회사를위한 REST API 프레임 워크를 설계하고 있습니다.REST 인증 : 사용자 정의 헤더 또는 Authorization 헤더에 키를 넣으시겠습니까?
Google 서비스를 이용하는 모든 발신자는 시스템에 액세스하기 위해 클라이언트 키를 제공해야합니다. 특정 클라이언트에 대한 액세스 권한 부여 및 속도 제한 및 모니터링에이를 사용할 것입니다. 또한 API 호출 중 일부는이며 고객 데이터에 액세스하고 OAuth 2 토큰을 사용하여 해당 데이터에 대한 액세스를 제어합니다.
제 질문은 클라이언트 키를 전달하는 방법입니다. HTTP 기본 인증 또는 쿼리 매개 변수는 URI에 전달할 수 없기 때문에 사용할 수 없습니다 (URI는 때때로 기록됩니다) - 대신 HTTP 헤더에 있어야합니다. 그래서 두 가지 접근법을 생각해 봤습니다. 둘 다 결함이 있습니다 :
(1) 우리 고유의 헤더를 발명하십시오 : MyCompanyAPIKey: api-key-goes-here
. 이것은 우리 자신의 헤더를 발명 할 것이기 때문에 결함이 있습니다. 이것은 잘못된 디자인 선택입니다. 다른 사람이나 표준 도구로는 작동하지 않습니다 (우리가 자체적으로 발명했기 때문에).
(2) 인증 헤더 : Authorization: Bearer api-key-goes-here
을 사용하십시오. OAuth가 헤더를 필요로하는 OAuth와 충돌 할 수 있기 때문에 이것은 잘못되었습니다. 기술적으로 나는 이 필요하지 않습니다. OAuth 토큰을 가지고있을 때 클라이언트 키가 필요합니다 (OAuth 토큰은 단일 클라이언트에만 한정되어 있기 때문에). 그러나 일반 도구로 처리 할 수 있는지 여부는 알 수 없습니다.
어떻게 진행해야한다고 생각합니까?
참고로 HTTP 기본 인증 자격 증명을 헤더에 전달할 수 있습니다. URI로 전달할 필요가 없습니다 – KTastrophy
@KTastrophy Ooh ... 나는 그것을 깨닫지 못했습니다. 몇 가지 RFC를 읽으십시오. – mcherm
@KTastrophy [다소 나중에] 아니요 ... RFC2617에 따르면 "승인"헤더를 사용하므로 도움이되지 않습니다. – mcherm