2011-09-01 1 views
1

Securing an API: SSL & HTTP Basic Authentication vs Signature HTTP 기본 인증은 REST 호출이 SSL을 통해 이루어지는 경우 REST 웹 서비스 호출을 보호하는 적절한 방법으로 인용됩니다.SSL 및 HTTP 기본 인증을 통한 REST 서비스

그러나이 방법은 Ajax를 사용하여 SSL 뒤에 보호 된 REST 서비스에 대한 호출을 수행하는 보안되지 않은 클라이언트 페이지에 대해서는 여전히 작동하지 않습니다. & Basic Auth.

나는 일반적인 방법으로 사용하여 암호 재설정을 수행하는 응용 프로그램을 설계하는 것을 시도하고있다 :

  1. 사용자가 사용자 이름과 요청 "암호를 재설정"이메일
  2. 사용자가 포함 된 암호 재설정 링크 메일을 수신 진입을 검증 토큰
  3. 사용자가 링크를 클릭하고 (토큰이 확인 후) 정의에 의해 자신의 업데이트 된 암호

의 유형이 페이지 에 로그인하지 않아도됩니다. REST 서비스를 호출하는 Ajax를 사용하여 토큰의 유효성 검사, 전자 메일 보내기 등과 같은 작업을 수행 할 때이 UI를 구현할 수 있습니까? 이러한 REST 서비스가 SSL & 기본 인증 (Basic Auth)의 보호를 받더라도 서비스를 호출하는 데 필요한 정보 (예 : 응용 프로그램의 "사용자 이름"및 비밀번호)는 브라우저를 통해 액세스 할 수있는 쿠키를 사용하는 것이 가장 좋습니다.

나는 뭔가를 놓친다는 것을 알고있다. 나는 단지 무엇을 모르겠다. :-)

+0

해결하셨습니까? – bryanmac

답변

0

나는 당신이 무엇을 보호하고 있는지 전혀 몰랐다. 그래서 나는 단지 생각을 버리고 만다.

사용자 (또는 멍청이를 가진 다른 사람)가 신뢰 당사자의 루트 목록을 제어하지 않는 경우 SSL 및 TLS는 의미가 없습니다. 자물쇠 열쇠가있는 사람을 믿지 않으면 돈을 금고에 두지 않을 것이기 때문에 나는 이것을 말합니다. 그래서 로그인 페이지를 로딩하는 사용자가 말하자면 TLS를 통과하는 사용자/통과는 낮은 바입니다. 좋아하는 영화 목록을 보호 할만큼 충분히 좋습니다. 그 동안

(인증 기관을 신뢰 가정), 데이터가 서버에 와이어를 통해 안전합니다 SSL에서 발생 3 -

Carby는만큼 1로 모든 것을 FSM

+0

RAmen! 감사. 암호를 재설정하기위한 낮은 막대입니다. 그냥 REST를 호출하는 Ajax가 먼저 로그인 할 필요가없는 앱에는 적합하지 않은 것 같습니다. – pastafarian

+0

AJAX를 사용하여 reset-your-password-token-link 이메일 메시지를 트리거하는 데 문제가 발생하지 않습니다. 물론 이메일 proggy 나 브라우저에서 링크를 클릭하면 새로운 페이지로 이동하거나 새로운 페이지를로드합니다. 나는 당신이 잘못된 (악의적 인) 서버로 보내지는 쿠키에 대해 걱정한다고 생각합니다 ... 무거운 물건을 많이 들지 않고도 위험을 피할 수는 없습니다. AJAX는 약점이 아닙니다. – Ram

+0

감사합니다. 예, 내 관심사는 주로 링크를 클릭 한 후 워크 플로의 "두 번째 부분"에 관한 것입니다.앱의 해당 부분이 Ajax 호출을하면 앱은 REST 서비스에 대해 자체 인증을해야하지만 브라우저를보고있는 사람에게 노출시키지 않고 인증 정보 (username/password a.k.a. apikey/sharedsecret)를 얻는 방법은 무엇인가요? – pastafarian

1

에 칭찬 프로세스에서 브라우저는 메모리에 이러한 자격 증명을 보유합니다. 사용자가 데이터를 입력하려는 경우이를 신뢰할 수 밖에 없습니다.

정보를 쿠키에 저장할지 여부를 결정하는 것은 웹 사이트 코드입니다.

1 - 3이 SSL로되어있는 경우 확인해야한다고 생각합니다.

+0

감사. 내 마음에 연결이 끊어 졌다고 생각 : 이것이 1 페이지 아약스 응용 프로그램이 될 경우 서버에 대한 유일한 여행은 이러한 REST 서비스를 호출하는 것입니다. REST 서비스는 호출 응용 프로그램을 신뢰하기 위해 인증 정보가 필요합니다. 어떻게 아약스 응용 프로그램이/인증 정보를 사용할 수 있습니다. 그것을 브라우저를 통해 노출시키지 않고? 아무도이 페이지로 가서 쿠키가 설정되어 있는지 확인하고 REST 사용자 이름/암호를 해제 할 수 없습니다. 그런 다음 username/pass를 사용하여 REST 서비스를 호출하는 다른 앱을 빌드하십시오. – pastafarian

+0

기본 인증을 사용하여 SSL을 통해 REST 서비스를 호출하기위한 지침으로 amazon S3의 기본 인증 스키마를 사용하고자한다고 가정 해 보겠습니다. 'Authorization : "AWS"+ ""+ AWSAccessKeyID + ":"+ Base64 (HMAC-SHA1 (UTF- 8 (Date), UTF-8 (AWSSecretAccessKey))) ... '아약스'1 페이지 '앱인 경우'AWSSecretAccessKey '가 세상에 노출되는 것을 어떻게 피할 수 있습니까? – pastafarian