2014-12-31 3 views
31

모바일 앱을 만들고 인증을 위해 JWT를 사용하고 있습니다.JWT 새로 고침 토큰 흐름

이렇게하려면 가장 좋은 방법은 JWT 액세스 토큰을 새로 고침 토큰과 연결하여 원하는만큼 자주 액세스 토큰을 만료시킬 수있는 것 같습니다.

  1. 새로 고침 토큰은 어떻게 생겼습니까? 임의의 문자열입니까? 해당 문자열이 암호화되어 있습니까? 다른 JWT입니까?
  2. 새로 고침 토큰은 액세스를 위해 사용자 모델의 데이터베이스에 저장됩니까? 이 경우 암호화해야합니다.
  3. 사용자 로그인 후에 다시 새로 고침 토큰을 보낸 다음 클라이언트가 액세스 토큰을 검색하기 위해 별도의 경로에 액세스하게합니까?
+1

새로 고침 토큰을 사용하는 경우 사용자가 UI에서 해당 토큰을 무효화 할 수있는 기능을 제공해야합니다. 한 달 동안 예를 들어 사용하지 않으면 자동으로 만료되도록하는 것이 좋습니다. –

+0

@jtmarmon : 새로 고침 토큰을 클라이언트 측에 저장하는 방법은 무엇입니까? 안드로이드 장치가 안전하다는 뜻인가요? – j10

답변

11

... 그것은 JWT를 대해하고 토큰을 새로 고침 이후이의 OAuth 2.0에 대한 것을 가정하면 바로 액세스 토큰과 같은

  1. , 새로 고침 토큰이 모두 포함 아무것도 할 수있다 원칙적으로 옵션 설명; Authorization Server가 무국적자가되기를 원할 때 또는 제시하는 클라이언트에게 일종의 "소유 증명 (proof-of-possession)"의미를 적용하고자 할 때 JWT가 사용될 수있다. 새로 고침 토큰은 자원 서버에 표시되지 않고 처음 발행 한 권한 부여 서버에만 표시된다는 점에서 액세스 토큰과 다르므로 JWT- 액세스 토큰에 대한 자체 포함 유효성 검사 최적화가 새로 고침 토큰을 보유하지 않음

  2. 이는 데이터베이스의 보안/액세스에 따라 다릅니다. 다른 당사자/서버/응용 프로그램/사용자가 데이터베이스에 액세스 할 수있는 경우 (예 : 귀하의 마일리지는 암호화 키를 저장하는 위치와 방법에 따라 다를 수 있습니다 ...)

  3. 인증 서버는 액세스 토큰 동시에 클라이언트가 토큰을 얻기 위해 사용하는 권한에 따라 토큰을 새로 고칩니다. 사양이 implementation with Node.js of JWT with refresh token에 본사를 둔 표준화 된 보조금

+1

2. 새로 고침 토큰의 해시를 데이터베이스에 저장 한 다음 사용자 새로 고침 토큰의 해시와 저장된 해시를 비교해야합니다. "일반 텍스트 암호를 데이터베이스에 저장하지 마십시오"라는 규칙은 다음과 같습니다. 사용자를 위해 만든 임의의 암호와 같은 토큰을 고려하십시오. – Rohmer

10

각각에 대한 자세한 내용과 옵션이 포함되어

1)가 UID를 사용하는이 경우 그리고 그것은 JWT 아니다. 토큰을 새로 고칠 때 새로 고침 토큰과 사용자를 보냅니다. JWT로 구현하면 JWT 내부에 있기 때문에 사용자를 보낼 필요가 없습니다.

2) 이들은 이것을 분리 된 문서 (표)에 구현합니다. 사용자는 다른 클라이언트 응용 프로그램에 로그인 할 수 있고 응용 프로그램별로 새로 고침 토큰을 가질 수 있기 때문에 나에게 의미가 있습니다. 사용자가 하나의 앱이 설치된 기기를 분실하면 다른 기기에 영향을주지 않고 해당 기기의 새로 고침 토큰을 무효화 할 수 있습니다.

3)이 구현에서는 액세스 토큰과 새로 고침 토큰을 모두 사용하는 로그인 방법에 응답합니다. 그것은 나에게 맞는 솔기.