[web-services] 토큰 만료-JSON REST API-오류 코드

JSON REST API가 있습니다. 15 분 동안 유효한 토큰을주는 핸드 셰이크가 있습니다. 15 분 이내에하는 모든 통화는 정상적으로 작동합니다. 15 분 후 오류 개체 (코드, 메시지, 성공 = false 포함)를 반환하지만 어떤 HTTP 오류 코드를 반환해야하는지 궁금합니다. 그리고 HTTP 오류 코드를 사용하면 특정 클라이언트가 엉망이 될까요? (HTML5, iPhone, Android). 이 시나리오에서 모범 사례로 간주되는 것은 무엇입니까?



답변

401 Unauthorized상태 코드를 반환해야합니다 . 토큰을 다시 설정하기 위해 추가로 하이퍼 미디어를 제공 할 수 있습니다.

웹 앱에서 일어나는 일에 대해 생각해보십시오. 은행 사이트로 이동합니다. 인증되지 않은 경우 로그인 페이지로 이동합니다. 그런 다음 로그인하면 잠시 동안 갈 수 있습니다. 그런 다음 만료되고주기가 반복됩니다.

그냥 생각.


답변

사양 rfc6750- “OAuth 2.0 인증 프레임 워크 : Bearer 토큰 사용”, https://tools.ietf.org/html/rfc6750 , p.8, 섹션 3.1, 리소스 서버는 401을 반환해야합니다.>

invalid_token 제공된 액세스 토큰이 만료, 취소, 형식이 잘못되었거나 다른 이유로 유효하지 않습니다. 리소스는 HTTP 401 (Unauthorized) 상태 코드로 응답해야합니다 (SHOULD). 클라이언트는 새 액세스 토큰을 요청하고 보호 된 리소스 요청을 다시 시도 할 수 있습니다.


답변

FWIW Facebook은 사용자 지정 JSON 응답과 함께 400을 사용합니다. 개인적으로 사용자 지정 JSON 응답으로 401을 선호합니다.

다음은 FB의 응답 본문입니다.

{
  "error": {
    "message": "Error validating access token: Session has expired on Jul 17, 2014 9:00am. The current time is Jul 17, 2014 9:07am.",
    "type": "OAuthException",
    "code": 190,
    "error_subcode": 463
  }
}


답변