장치에 시간 인증 된 인증 토큰을 받기 위해 인증하는 API가 있습니다. 이러한 장치는 "내 암호 기억"확인란을 가지고있어이 인증이 자동으로 이루어질 수 있습니다.Django의 암호 해저와 함께 이미 해시 된 암호 사용
기기의 일반 텍스트에 사용자 비밀번호를 저장하지 않을 것입니다.
장치가 프리젠 테이션 및 고객 지향적이기 때문에 토큰 만료 시간을 길게 만들 수 없습니다. 결국 토큰은 고객과 시간이 지나면 만료되며 장치는 요청을하지 못하거나 인증 대화 상자를 팝업해야합니다. 허용 가능한 해결 방법이 있습니다 (예 : 토큰이 지난 2 일, 매일 아침 재택이 필요함).하지만 먼저 해당 복잡성이 기기에 표시되지 않도록하는 옵션을 살펴보고 싶습니다.
비밀번호를 기기에 소금으로 담아 저장하려고 시도했습니다. . 이 해시 된 암호는 인증 요청에서 제출됩니다. 서버 측에서 API auth는 Django의 contrib.auth를 사용합니다. 기존 암호 작업 과정은 요청 암호를 해시하고 저장된 암호 해시와 비교하는 것입니다. 이미 해시 된 요청 암호가 있으므로 - 비교 전에 저장된 암호를 해시해야합니다.
이 솔루션을 시도했지만 모든 암호 해시를 수정해야하는 것으로 보입니다. 난 여전히 사이트의 비 API 부분에서 표준 암호 인증을 지원해야하므로 사용하고자하는 모든 해시 알고리즘에 대해 두 배로 된 해시로 끝날 것입니다. BCryptPasswordHasher
/PreHashedBCryptPasswordHasher
등등. , 다른 개발자가 해시를 추가하거나 변경하려고 할 때 알아야하는 시나리오는 아닙니다.
"해시 전 해독"을 달성하는 또 다른 옵션은 django.contrib.auth를 수정하는 것이지만 포크를 유지하지 않는 것이 좋습니다.
나는 다른 사람들이 이전에이 문제를 해결했음을 확신합니다. 나는 일반적인 비교를 수행하지 않고 사전 해쉬 된 암호 비교를 수행하는 단일 지점을 찾는 방법에 대한 구체적인 조언과 해결책에 대한 일반적인 조언을 찾고있다. 보안 문제를 해결하고 합리적인 대안 접근법을 사용하고 있다면 기꺼이 들려 줄 것입니다.
건배
- 이이 API에 대해 인증에서 해시에 접근 할 수있는 장난 꾸러기 민속을 차단할 수는 없지만 더 광범위하게 노출되는 많은 사이트에서 하나의 암호를 사용하여 사용자를 보호하는 것입니다.
제한된 시간의 토큰을 제공하고 있지만 사용자가 새 토큰을 가져 오기위한 UI를 표시하지 않도록 비밀번호 해시를 저장할 수 있도록 허용 하시겠습니까? 당신이 두 번째, unrevokable 토큰을 추가하려고하는 것 같아요. 어떤 나쁜 것입니다. 토큰의 시간 제한을 더 길게 만들 수없는 이유는 무엇입니까? – Hamish
암호를 변경하면 장치에 저장된 해시 된 암호가 '폐기'됩니다. 후자의 질문은 제 질문의 세 번째 단락에 나와 있습니다. 이 "영구적으로 내 암호를 기억하는"것이 좋지 않지만 고객이 원하는 트레이드 오프입니다. –
해시 된 암호를 사용하여 사람들을 인증하도록 허용하면 해시 된 암호는 일반 텍스트 암호가됩니다. 해시로 인증 할 수있는 인터페이스를 공개함으로써 소금물 해시 암호 저장소를 일반 텍스트 암호 저장소로 효과적으로 변환 했으므로 사용자 에이전트에 단일 일반 암호를 저장하는 것보다 더 큰 보안 문제가 될 수 있습니다. –