1

저는 Android 앱을 개발 중입니다. 인증을 위해 사용자는 사용자 이름과 암호를 입력해야하며 서버는 만료 인증 토큰을 반환합니다.Android에서 자격증 명 저장의 안전한 방법

현재 토큰을 저장하고 있지만 자격 증명은 저장하지 않습니다. 토큰 인증이 실패 할 때 사용자가 자격 증명을 다시 입력하지 않고도 백그라운드에서 저장된 자격 증명을 사용하여 사용자를 다시 로그인 할 수 있도록 자격 증명을 로컬에 저장하는 것이 가장 안전한 방법입니다.

저는 SharedPreferences를 사용하여 데이터를 저장하고 있습니다. 하지만 그들은 정말로 안전합니까? 이 목적으로 AccountManager를 사용할 수 있습니까?

+0

SharedPreferences는 확실히 안전하다고 간주되어서는 안됩니다. – tyczj

+1

이 게시물을 읽고, 받아 들여진 답변은 다른 stackoverflow 답변에 따라 Google의 android dev에서 tech lead입니다. https://stackoverflow.com/questions/785973/what-is-the-most-appropriate-way-to-store-user-settings-in-android-application/786588#786588 – Jimmy

답변

0

토큰이 만료되면 자동으로 사용자를 다시 로그인하는 백그라운드 서비스가 있으면 안전하지 않을 수 있습니다.

말한 시간이 길어질 수 있습니까? 자격 증명을 저장하고 정기적으로 로그인하려고하면 보안이 취약 해집니다.

+0

만료 시간을 변경해서는 안됩니다. 그 서비스는 다른 사람들에 의해서도 사용되기 때문입니다. 내가 토큰의 만료 기간을 연장했다하더라도 토큰을 어딘가에 저장해야 할 것입니다. 따라서 사용자 이름과 암호의 보안에 대해 걱정한다면 토큰 보안에 대해 걱정해야합니다.이 토큰은 이제 더 오랜 기간 동안 유효합니다. 확실히 내가 찾는 대답은 아닙니다. 어쨌든 고마워. –

+0

가능한 프로세스가 토이를 다시 발행 할 수 있습니다. 먼저, 이전 토큰의 유효성을 검사 한 다음 사용자가 여전히 존재하는지 또는 액세스가 취소되었는지 또는 응용 프로그램에 적합한 지 확인하십시오. 다음으로 갱신 된 만료 된 새 토큰을 발행하십시오. 린스하고 반복하십시오. 이 일을하고 재발행을 처리하는 클래스를 갖는 백그라운드 서비스는 아마 당신이 찾고있는 것이 될 것입니다. 자격 증명을 저장할 필요가 없으며 사용자가 안전합니다. – Swatarianess

+0

다시 이것이 보안에 대한 내 관심사를 해결하는 방법을 알지 못합니다. 내가 누군가의 토큰에 액세스 할 수 있다면, 서버가 아무런 인증없이 새로운 토큰을 반환 할 것이기 때문에 계속해서 새로운 토큰을받을 수 있습니다. –