API 키를 통한 인증 / 인증을 사용하여 REST API를 설계하고 있습니다.
나는 그것이 가장 적합한 장소를 알아 내려고 시도했으며 많은 사람들이 다음과 같은 사용자 정의 HTTP 헤더를 사용하도록 제안한다는 것을 알았습니다 ProjectName-Api-Key
.
ProjectName-Api-Key: abcde
그러나 다음 Authorization
과 같이 사용자 정의 체계와 함께 헤더 를 사용하는 것이 가능하고 이념적으로 정확합니다 .
Authorization: ApiKey abcde
반면에, 일부 클라이언트에서는 사용자 지정 권한 부여 체계가 예기치 않게 지원되지 않을 수 있으며 사용자 지정 코드로 연결될 수 있으므로 클라이언트에 대한 기대치가 없기 때문에 사용자 지정 헤더를 사용하는 것이 좋습니다.
어떤 방법으로 API 키를 보내시겠습니까?
Bearer
scheme은 독점적으로 oAuth2와 함께 사용됩니다. oAuth와 별도로 적용하면 오용으로 간주됩니다. oAuth가없는 경우이 체계를 사용하는 것이 왜 올바른가요? 그런데 API에 대한 인증 유형을 선택하는 데 문제가있었습니다. API는 하나의 신뢰할 수있는 서비스에서만 사용할 수 있으므로 oAuth2의 클라이언트 자격 증명 흐름을 조사했지만 필자의 경우 ApiKey와 비교하여 어떤 이점도 찾지 못했습니다.
ApiKey
것으로 이름이 바뀌고 해석 되면 유효한 oAuth 구현으로 간주 될 수 있음을 이해 Access Token
했습니다. 그것은 일종의 철학적 측면입니다. 제 사례가 간단한 용어로 설명 될 수 있다면 복잡한 정의를 가져 오지 않기로 결정하고 "ApiKey"라고 부르기로 결정했습니다. 귀하의 프로토콜이 oAuth 표준을 구현하는 경우을 사용하는 데 동의 할 수는 Bearer
있지만 동의 하지 않습니다.이 체계를 적용 할 수 없습니다.
Authorization: Bearer <token>
헤더를 사용 하며 그에 대한 단일 문제는 없었습니다. 토큰은 JWT 입니다.