2017-04-01 5 views
1

api 인증 시스템을 사용하려고합니다. 하지만 기존 방식과 달리 이메일과 비밀번호가없는 이됩니다.전자 메일 및 암호가없는 인증.

프런트 엔드는 Android 앱입니다. 처음에 앱은 로컬 저장소에 빈 auth_token을 가지게됩니다. 이제 앱은에 대한 인증 요청을 mobile_number, device_id 및 gcm_id를 전송하여 서버에서 인증 토큰으로 요청합니다.

이제 서버는 16 securerandom hex,을 생성하고 프런트 엔드에 인증 토큰으로 보냅니다.

프런트 엔드는이 인증 토큰을 사용하여 모든 API를 호출해야합니다.

서버 사용자 테이블은 다음과 같습니다.

id || mobile_number || device_id || gcm_id || AUTH_TOKEN

질문 1 :

내가 MOBILE_NUMBER, 디바이스 ID를 기반으로 내 인증 토큰을 생성해야하거나 독립적으로 생성 할 수 있습니까?

질문 2 :

이 인증 토큰을 변경해야 하는가? 또는 사용자에게 동일한 인증 토큰을 영구적으로 사용할 수 있습니까? 인증 이런 종류의 함정은 무엇

: 그것은 변경해야하는 경우 .. 당신은

질문 3을 사용하는 전략을 지적 나를 안내하시기 바랍니다 수 있습니다. 나는 사용자가 전자 메일과 암호를 입력하는 것을 원하지 않지만 동시에 개인화 계산을 위해 사용자를 식별하려고합니다.

+0

사용자의 전화가 끊어지면 계정에 대한 액세스가 영구적으로 손실됩니까? – zerkms

+0

그렇듯이 간단합니다. – gates

답변

-1

질문 3 : 함정 하나를 저장하면 어디에서나 키를 암호화하지 않습니다. 데이터베이스 (사용자 테이블 등)에 저장하는 경우 다음과 같은 방법으로 암호화해야합니다. https://saasbook.blogspot.com/2016/08/encrypting-application-level-data-at.html

+0

그렇다면 auth_token을 암호화해야한다고 말하는 것입니까? – gates

+0

보통 그렇 겠지만, 잘못 사용되었다고 걱정하지 않는다면 어쩌면 그렇지 않을 수도 있습니다. – mrlindsey

+0

휴대 전화 번호 및 기기 ID는 어떻게됩니까? 그들은 또한 암호화되어야합니까? – gates

1

인증 토큰은 비밀번호입니다. 일반적으로주기적인 순환으로 클라이언트와 서버가 자동으로 처리하도록 설계되어 손상된 사용자 장치 또는 Heartbleed와 같은 다른 서버 버그와 같은 잠재적 인 무차별 공격이나 자격 증명 누출의 위험을 완화해야합니다. 토큰이 너무 자주 (아마도 2 주 또는 한 달) 만료되도록하고, 토큰이 만료되면 클라이언트 응용 프로그램에 재 인증이 필요하거나 자동으로 토큰을 새로 고쳐야합니다.

설명하는 사용자 인증 체계는 사용자가 아닌 장치에 대한 것입니다. 이러한 세부 정보를 사용하여 한 사용자를 신뢰할 수있게 식별 할 수는 없지만 이메일 + 암호가 더 좋다고 말할 수는 없으며 다른 용도로만 제공됩니다. device_id를 사용하여 휴대 기기를 식별하고 전화 번호를 확인하여 소유자가 변경되지 않았다는 확신을 추가합니다. GCM에 익숙하지 않아 어떤 속성이 추가되는지 잘 모르겠습니다. 다른 사용자가 위장 할 수없는 또 다른 장치 인증 요소를 추가하려면 클라이언트 응용 프로그램에서 초기 토큰을 요청하는 데 사용할 "알고있는 것"암호를 생성하도록하는 것이 좋습니다. 해당 장치 내부 암호는 자동 토큰 발급 목적으로 서비스를 인증하기위한 자체 비밀이 될 수 있으며 정기적 요청 별 인증 토큰보다 자주 순환 될 수 없습니다.

클라이언트 암호와 인증 토큰 모두에 대해 암호처럼 길고 무작위로 만들어야합니다. 인증 토큰이 자동으로 회전하는 경우 현실적인 위험을 유발하지 않으면 서 인증 토큰을 훨씬 더 짧게 허용 할 수 있습니다. 난 짧은 - 살았 토큰에 대한 적어도 16 랜덤 바이트는 12 문자로 실용적인 오프라인 해쉬 짐승 짐승의 영역 내에서 최소로해야한다고 말하고 싶지만, 그것은 그럴듯한 사이에 안전의 상당한 창문을 가지고 좋은거야 그리고 내일의 크래킹 능력 향상.

설명하는 것은 사람을 인증하는 것이 아니라 개별 장치를 인증하는 것입니다. 그것은 당신이 당신의 프로젝트를 위해하고자하는 것처럼 들리지만 구별과 그 의미를 이해하는 것이 중요합니다.

관련 문제