2013-07-22 5 views
13

내 모바일 응용 프로그램 (iOS & Android) 및 API (PHP)의 사용자 인증을 처리하는 가장 좋은 방법을 찾으려고합니다. 내가 연구 한 바로는API 토큰이 무엇입니까

이 옵션은 다음과 같습니다

기본 인증을 통해 HTTPS - 모든 요청에 ​​대한 사용자의 확인 사용자 이름/암호를 입력합니다.

세션 - 각 요청마다 세션 ID를 보냅니다. 서버는 상태를 유지합니다. 그래서 응용 프로그램은 사용자 이름/암호를 보내고 서버는 내 웹 사이트처럼 후속 요청에서 로그인 한 사용자를 확인합니다.

API 토큰 - 모바일 앱이 사용자 이름/비밀번호를 전송하고 토큰을 다시받은 다음이를 후속 요청에 추가합니다. 토큰은 DB에 저장되고 각 요청에 대해 검사됩니다.

API 토큰에 대한 설명이 잘못된 것 같아요. 세션 ID가 DB에 저장되어 있기 때문에 세션과 동일하게 보입니다.

  1. API 토큰에 대한 내 설명을 수정할 수 있습니까? 그들을 위해 무엇입니까? 세션 ID와 어떻게 다른가요?
  2. API 토큰의 장점은 무엇입니까?
  3. "API 토큰"을 만들기위한 프로토콜 인 oAuth (사용을 간소화하려는 경우)입니까?

답변

16

내가 전문가는 아니지만하지만 난 당신에게 내가 주운 센트의 몇 줄 것이다 :

1) API 토큰은 일반적인 용어의 비트입니다. 일반적으로 API 토큰은 서비스에 대한 액세스를 요청하는 응용 프로그램의 고유 식별자입니다. 귀하의 서비스는 귀하의 서비스를 요청할 때 사용할 애플리케이션에 대한 API 토큰을 생성합니다. 그런 다음 사용자가 제공 한 토큰을 인증하기 위해 저장 한 토큰과 일치시킬 수 있습니다.

세션 ID를 사용할 수 있지만 용도는 API 토큰과 다릅니다. 세션 ID는 인증 형식이 아니라 인증 결과입니다. 일반적으로 사용자가 리소스 (예 : 서비스) 사용 권한을 부여 받으면 세션이 설정됩니다. 따라서 세션 ID는 사용자가 자원에 대한 액세스 권한을 부여받을 때 만들어집니다. API 토큰은 사용자 이름/암호와 유사한 인증 형식입니다.

2) API 토큰은 안전하지 않은 HTTP를 통해 일부 사용자 이름/비밀번호 조합을 보내는 대체 솔루션입니다. 그러나 누군가가 대신 API 토큰을 사용하고 사용할 수있는 문제가 여전히 존재합니다.

3) 그렇습니다. API 토큰을 "신선한"상태로 유지하는 방법입니다. 동일한 API 토큰을 전달하는 대신 서비스를 사용하려고 할 때 액세스 토큰을 요청합니다. 다음과 같이 OAuth는 2.0 단계는 다음과 같습니다가) 요청이 성공 응답이 서비스에 대한 또 다른 요청이 이루어집니다 코드
      c)를 반환하는 일종의 자격 증명
      B)와 서비스로 전송      
코드
      d) 성공적인 응답은 각 API 요청에 서명하기위한 액세스 토큰을 반환하고 완료 될 때까지 반환합니다.

많은 대규모 서비스 제공 업체는 현재 OAuth 2.0을 사용하고 있습니다. 완벽한 솔루션은 아니지만 현재 가장 안전하고 광범위하게 확산되는 API 보안 방법 일 것입니다.

+0

"세션 ID는 인증 형식이 아니라 인증 결과입니다."라고 자세히 설명해 주시겠습니까? – paul

+0

내 대답을 짧게 업데이트했습니다. 세션 ID는 인증 양식이 아니며 API 토큰입니다. –

+0

API 키가 내 앱에서 오는 요청을 식별하고 앱을 통해 로그인하는 사용자와 아무 관련이 없다고 말하는가? 왜냐하면 내가 읽은 API는 무국적이어야하며 세션을 사용하지 않아야하기 때문입니다. – paul

관련 문제