2013-02-12 7 views
2

REST API를 개발 중입니다. 현재 나는 최소한으로 안전하게하려고 노력하고있다. 이 주제에 관해서 대부분의 게시물을 발견했기 때문에이 질문을하고 있습니다.REST API 인증 (인증 된 상태 유지)

  • 기본 인증
  • AWS 인증 프로토콜
  • 오픈 ID
  • 오픈 ID 연결
  • 의 OAuth 의사 인증

기본 인증 및 AWS : 인증의

나는이 계획을 발견 인증 on은 firts 인증 후에 요청 된 서명 된 요청을 계속 전송하기 때문에 인증 된 요청을 유지 관리합니다.

OpenID 및 OAuth 인증이 (초) 요청을 어떻게 유지하는지 이해가 안됩니까? 각 요청마다 OAuth/OpenID 서버로 액세스 토큰을 확인해야합니까? 이는 REST API가 변경된 요청을 수신하는 것을 어떻게 보호합니까?

주제에 대한 권장, 조언 또는 읽기 자료는 언제나 환영합니다.

답변

1

나는 당신은 웹 응용 프로그램을 만들고 구글의의 OAuth API의를 사용하려면) 여기에 대한 OAuth를

내가 이야기 것입니다.
ii) 앱 here을 등록하고 자격증을 취득하십시오.
iii) 이제 앱에서 Google의 SDK를 사용하여 로그인 페이지를 열고 자격 증명을 입력하면 Google에서이를 확인하고 액세스 토큰을 보내고 토큰을 새로 고칩니다.
iv) 액세스 토큰을 사용하여 Google API에 REST를 호출하고 사용자의 데이터를 가져옵니다.

이제 질문에 대한 답변 -
access token은 일반적으로 1 시간 동안 있습니다. 예. 한 시간 내에 Google의 API에 대해 인증 된 모든 전화는 동일한 액세스 토큰을 사용하여 만들 수 있습니다.
또 다른 유형의 토큰 인 Refresh Token이 있습니다. 앱은 언제든지 제공 업체의 토큰 교환 엔드 포인트에 도달하여 새로 고침 토큰 + 액세스 토큰 쌍을 새로 고치는 토큰을 교환 할 수 있습니다.

이제는 한 시간 동안 도움을 줄 수있는 액세스 토큰과 언제든지 교환 할 수있는 새로 고침 토큰이 있습니다.

토큰 새로 고침은 사용자가 앱에 대한 권한을 명시 적으로 취소 한 시간까지 원하는만큼 지속됩니다. (사용자가 자신의 리소스에 액세스하는 것을 원하지 않는다고 Google에 알립니다.)

OAuth를 사용하면 인증되고 권한이 부여 된 클라이언트 만 API를 공격 할 수 있으므로 REST API를 안전하게 보호 할 수 있습니다. 하지만 일반적으로 OAuth는 타사 고객이 사용자의 리소스에 액세스해야하는 상황이있을 때만 사용됩니다!

+0

답변 해 주셔서 감사합니다. 그러나 토큰을 가지고 있다고해서 사용자가 인증되었다는 의미는 아닙니다. 토큰을 다시 보낼 수있는 프로그램은 올바른 클라이언트로 간주됩니다. 아니면 내가 틀렸어? 액세스 토큰은 클라이언트가 보내는 요청/응답이 변경되었을 수 있다는 사실을 변경하지 않습니다. 아니? 모든 요청에 ​​서명하지 않고 어떻게 피할 수 있습니까? – doart3

+0

서버가 베어러 토큰을 발행하면 토큰을 가진 모든 사람이 API를 사용할 수 있습니다. 이것이 액세스 토큰이 수명이 짧은 주된 이유 중 하나입니다. 마지막 질문에 대한 답은 앱의 아키텍처에 따라 다릅니다. 인증 코드 흐름을 검색하면 토큰을 전달하고 안전하게 정보를받는 방법을 알게됩니다. – divyanshm

+0

감사합니다. @divyanshm – doart3