2013-04-20 2 views
0

나는 Rail app에 OAuth를 제공하기 위해 Doorkeeper gem을 사용하고 있습니다. 클라이언트는 Chrome 확장 프로그램입니다.Doorkeeper OAuth에서 자동 토큰 새로 고침을 방지하는 방법은 무엇입니까?

doorkeeper.rb에서 'use_refresh_token'이 (가) 주석 처리되었으며 'access_token_expires_in'이 (가) 1 분으로 설정되었습니다. 나는 그것이 클라이언트가 1 분 후에 다시 인증하도록 할 것이라고 생각했다. 그러나 use_refresh_token이 있는지 여부에 관계없이 재 인증이 자동으로 발생합니다.

use_refresh_token을 사용하면 액세스 토큰이 만료 될 때마다 'oauth_access_tokens'에 새로운 행이 추가됩니다. 'oauth_access_grants'에 새로운 행이 추가되지 않았습니다.

use_refresh_token이 주석 처리 된 상태에서 새 행이 두 테이블에 추가됩니다. 클라이언트가 수동으로 re-authing하는 경우에 나는 예상 할 것입니다. 하지만 자동으로 진행되는 것으로 보입니다. 사용자가 OAuth 로그인 화면을 통해 앱을 다시 인증하지 않아도 액세스 권한이 부여됩니다.

내 알 수없는 것에 대해 사과 드리며, Doorkeeper와 OAuth를 처음 접했고 Google 외에도 단서를 찾지 못했습니다.

+0

이것을 연구하면서 Google API는 '강제'값을 허용하는 approval_prompt 매개 변수를 지원함을 알았습니다. 그것이 내가 Doorkeeper와 복제하려고하는 행동입니다. –

답변

0

OAuth 2.0은 액세스 토큰을 얻기위한 권한 부여 URI를 전송하고 사용자가 토큰을 가져올 수있는 권한이없는 동안 서버가 로그인 페이지로 리디렉션되는 동안 작동합니다. 귀하의 사례에서 만료 시간이 너무 짧아서 사용자가 처음으로 사용자 이름과 암호를 입력했을 때 세션이 열리기 때문에 클라이언트가 새 토큰을 요청할 때 사용자가 여전히 권한 서버에 로그인 할 때 세션이 변경되면 시간을 변경할 수 있습니다 토큰 유효 시간보다 작게 세션을 테스트하고 테스트하십시오.

+0

이것은 다른 하위 도메인을 다루고 있으며 사용자가 아직 알려지지 않은 것을 알지 못했습니다. 사용자가 여전히 있었기 때문에 oauth 공급자가 토큰을 새로 고쳤습니다. 하위 도메인을 정렬하고 사용자를 올바르게 기록하면 예상대로 작동합니다. 고마워 Bobo. –

관련 문제