2016-07-22 1 views
4

Android 앱을 구현 중이며 사용자 로그인이 있어야합니다. 이렇게하려면 로그인 목적으로 한 번만 내 인증기를 만듭니다. 그러면 AccountManager가 액세스 토큰을 요청할 수 있으므로 응용 프로그램이 암호를 직접 처리하지 못합니다. AccountManager는 사용자 계정과 토큰을 저장합니다.계정 관리자를 사용하여 Android에서 JWT 인증 구현

저는 REST API에서 사용자를 인증하기 위해 JWT (Json Web Token)를 사용하고 있습니다.

이 흐름이 올바른지 또는 Android에서이를 수행하는 더 나은 방법이 있는지 궁금합니다.

  1. 사용자가 처음에 로그인 화면에서 사용자와 암호를 입력 : 여기

    내가 현재 사용하고있는 흐름입니다.

  2. 계정 관리자에 저장된 유효한 토큰 (JWT)을 검색하도록 서버에 요청합니다.

  3. 이후 요청은 수신 된 액세스 토큰을 만료 (1 시간)하여 API에서 콘텐츠를 검색 할 때까지 사용합니다.

  4. 토큰이 만료 된 후에는 발급 후 최대 2 주 후에 새로 고칠 수 있습니다. 이 순간부터 새 토큰을 검색하려면 사용자 자격 증명이 필요합니다.

이 과정은 토큰을 사용하여 작업하는 올바른 방법입니까? 프로세스가 안전한가요? 다른 옵션이 있습니까?

이 흐름은 새로운 토큰을 생성하기 위해 "새로 고침 토큰"을 사용하지 않고 액세스 토큰을 사용한다고 가정 할 때 Android 계정 관리자의 가장 좋은 용도는 무엇입니까? 어떤 다른 도구를 사용해야합니까? "새로 고침 토큰"을 구현하기 위해 JWT에서 Oauth2 구현을 권장합니까?

건배!

+0

해결책을 얻었습니까? – ezdookie

+0

@ezdookie 아니, 방금 설명한대로 시스템을 구현했습니다. –

답변

1

JSON 웹 토큰을 사용하고 재생산하는 올바른 길을 가고 있습니다.

하지만 당신이 언급 한 안전 모두에 대한 당신이 검색 토큰을 암호화하고 AES 또는 RSA와 같은 당신의 선택의 몇 가지 암호화 방법 (사용자 자격 증명과 같은도) 계정 관리자에 저장입니다 사용하려는 경우 해독하십시오. 또한 서버가 생성 한 비밀 키를 비밀 알고리즘과 함께 사용하면 해커의 공격을 막을 수 있습니다.

루트 액세스 권한을 가진 모든 사람은 저장된 자격 증명 데이터베이스를 사용하여이를 사용할 수 있습니다.

이러한 트릭을 사용하면 새로 고침 토큰과 관련된 Oauth 2.0 사용의 필요성이 줄어 듭니다.

희망 하시겠습니까?