2016-09-26 5 views
0

Jersey 2.x를 사용하여 내 애플리케이션 용 REST API를 구현했습니다. 나중에 모바일 앱을 추가 할 예정이므로 REST 방식을 사용했다. 지금은 단지 웹 앱입니다. 나는 보안에 대해 생각하고있다. 내가 처리해야 할 두 가지가 있습니다.REST API를 통한 인증 및 API 자체 보호

  1. 사용자 인증 및 권한 부여 : 지금은 HTTP를 통한 HTTP 기본 인증을 사용하고 있습니다. 그러나 사용자가 유선을 통해 사용자 이름과 암호를 보내는 대신에 더 좋은 방법이 있습니다. 나는 그것이 HTTPS를 통해 이해하지만 나는 탐구 중이다. OAuth 1.0a가 떠오른다. 나는 올바른 길을 가고 있는가?
  2. API 자체 보안 : 내 웹 앱을 제외하고 다른 클라이언트가 흰색 목록에있는 것을 원하지 않습니다. 나중에 모바일 앱을이 화이트리스트에 추가 할 것입니다. 이 클라이언트를 식별 할 수있는 비밀 키를 상상하고 있습니까?

나는 모두 # 1과 # 2는 위의 OAuth 1.0a를 함께 할 수있는 상상하지만, 보안 및 권한이 부여되고 있는지 그들은 측면에서 두 개의 서로 다른 구현이다. 둘 다 공존 할 수 있습니까? 현실 세계에서 시작하는 방법과 몇 가지 예를 알려줄 수 있습니까?

거기에는 많은 정보가 있지만 보안은 내 강한 편이 아니며 제 자신의 응용 프로그램에서 직접 코딩하여 이해하려고합니다.

+0

가능한 중복 http://stackoverflow.com/questions/6767813/api-keys-vs-http-authentication-vs-oauth-in-a- 편안한 API) –

+0

OAuth 1.0a를 언급하고 OAuth 2.0/OpenID Connect를 사용하지 않는 특별한 이유가 있습니까? –

+0

솔직히 OAuth 2.0을 아직 연구하지 않았습니다. 그래서 이유가 있습니다. – motiver

답변

0

첫 번째 제안은 OAuth 2.0을 살펴 보는 것입니다. OAuth 1.0a보다 좋거나 나쁘면 논의하지 않겠지 만 더 많은 입양이 필요한 것 같습니다. 온라인 리소스를 찾을 수 있습니다. OAuth2는 또한 HTTPS의 어깨에 많은 보안 기능을 담고 있으며 이미 사용하고있는 것으로 보입니다. 나는 어떤 장점과 단점에 대한 this answer을 확인 할 OAuth2를 함께 HTTP 기본 인증을 비교 관련하여

하지만 큰 그림의 관점에서 : 전체 자격 증명은 항상 각 요청에 포함 된 기본 인증으로

동안 OAuth2는 각 요청에 포함되는 액세스 토큰입니다. 당신이 (기본) 모바일 응용 프로그램을 할 계획 인 경우 비밀 키를 각 클라이언트 애플리케이션을 식별과 관련

이 실제로 당신이 앞으로 큰 도전을하지만, OAuth2를 지원하기 때문에 이러한 응용 프로그램은 정말 할 수 없습니다 비밀 유지 (공격자가 응용 프로그램을 리버스 엔지니어링하여 비밀을 찾을 수 있음).

결론적으로 전통적인 웹 응용 프로그램에서는 API가을 실제로 사용하는 승인 된 사용자에게만 액세스하도록 허용하기 쉽습니다. API를 네이티브 모바일 애플리케이션으로 열려면 승인 된 애플리케이션 중 한 곳에서 전화가 걸려 왔음을 입증하는 것이 힘들 것입니다.

일반적인 OAuth2 시나리오의 예를 보려면 Auth0 Architecture Scenarios을 확인하십시오. [편안한 API에서 OAuth를 대 HTTP 인증 대 API 키 (의