2017-02-14 1 views
1

내 사이트에 제 3자가 액세스 할 수있는 일부 REST 서비스가 있습니다. 내 계획은 간단합니다. 이 서비스를 요청하기 위해서는 나에게 키를 요청해야합니다. 나는 그들에게 개인적으로 GUID를 제공 할 것이다. 내 서비스에 대한 각 호출은 필터를 통해 헤더의 키를 확인하고 이에 따라 요청을 수락/거부합니다. 이 사이트는 모두 HTTPS이므로 전송 중에 키가 암호화됩니다. 나는 권한있는 클라이언트에게 키가 시각적으로 식별 될 수 있는지 걱정하지 않습니다. 즉, 어떤 종류의 '내부'공격이나 키 공유 사람들에 대해 걱정하지 않습니다. 나는 무작위로 권한이없는 외부 사용자를 원하지 않는다.REST 호출을 인증하기 위해 HTTP 헤더에 키를 보내기 만하면됩니까?

나는 주변을 둘러 보았고 아무도 정확하게 이런 식으로하는 것을 보지 못했다. 나는 지나치게 단순화하는 것처럼 느껴진다. 그러나 다른 한편으로는, 나는 그것의 무엇이 잘못되었는지 보지 않는다.

내 질문은 ..이 사운드는 (기본/최소 관점에서) 충분히 안전합니까? 아니면 내가 보지 못하고있는 거대한 보안 구멍을 노출합니까?

FWIW - 나는 봄 보안 4.

감사를 포함하는 스프링 프레임 워크를 사용하고 있습니다!

+0

기본 API 키 구현과 같은 소리가납니다. [먼저 알아보기] (https://stackoverflow.com/questions/25317405/securing-rest-api-using-custom-tokens-stateless-no- ui-no-cookies-no-basic-au)가 있습니다. – dkanejs

+0

예. 미안하지만 원래 메시지에는 분명하지 않았습니다. 나는 이미이 일을하고있다. 그것은 살아 있고 잘 작동합니다. 내 질문에 대한 더 .. 기본 (또는 최소한의 관점에서) 충분히 안전하다고 들리는 지, 아니면 내가 보지 못하고있는 거대한 보안 구멍을 드러내는가? 원래 게시물을 업데이트하겠습니다. –

+0

시원하게, 꽤 일반적인 패턴입니다. 때로는 최소한의 접근 방식이 가장 좋습니다. 사용할 수있는 추가 접근법을 사용하여 답변을 제출했습니다. – dkanejs

답변

2

HTTPS이고 API 키가 설명 된 것처럼 전송 중에 암호화 된 헤더에 있으면 예쁜 표준 디자인 인증 패턴을 따릅니다.

이제 보안은 API 키를 배포하고 저장하는 방법에 달려 있습니다.

비록 "Application Identifier and Key pairs"접근 방식을 사용할 수 있습니다. 이 API 키 패턴 반면

이 패턴은 두 가지를 분리, 응용 프로그램 한 토큰 비밀 사용 토큰의 정체성을 결합합니다. API를 사용하는 각 응용 프로그램은 응용 프로그램 ID (응용 프로그램 ID)라고하는 식별자 이라는 불변의 초기 ID를 발급합니다. 앱 ID는 이며 상수이거나 비공개 일 수 있습니다. 또한 각 응용 프로그램 에는 1-n 응용 프로그램 키 (App_Keys)가있을 수 있습니다. 각 키는 App_ID와 직접 연결된 이며 비밀로 처리되어야합니다.

앞으로 응용 프로그램을 확장하려는 경우에 대비하십시오.

관련 문제