사용자 인증을 위해 Google의 OAuth2 인터페이스를 사용하도록 웹 사이트를 설정 중입니다. 웹 사이트는 암호화하려는 각 사용자와 관련된 개인 데이터를 저장합니다.OAuth2 인증을 사용하여 개인 데이터를 보호하는 방법은 무엇입니까?
웹 사이트에 대한 자체 인증 방법을 구현 한 경우 각 사용자의 데이터를 강력하게 보호 할 수 있도록 사용자의 자격 증명 (사용자 암호 포함)에서 키를 쉽게 파생시킬 수있었습니다. 하지만 OAuth2를 사용하면 일정 기간 동안 해당 사용자 권한을 부여하는 액세스 토큰 만받을 수 있다고 생각합니다. 문제는 액세스 토큰 값이 시간이 지남에 따라 변경된다는 것입니다.
OAuth2가 보안 키를 파생시키는 데 사용할 수있는 사용자에게 연결된 불변의 비밀을 제공 할 수있는 방법이 있습니까? 아니면 OAuth2를 사용하여 안전한 영구 비밀을 생성하는 다른 방법이 있습니까?
--- 편집 --- 질문과 의견, 여기에 몇 가지 생각이 고려해야 할에 대한 응답으로
:
모든 사용자 정보가 항상 강력한 암호화와 사용자 인증으로 보호해야한다- - 우리가 웹 사이트 & 데이터베이스 해킹에 관한 많은 뉴스 기사를 읽는 이유는 개발자가 "정말로 보안해야합니까?"라고 대답하기 때문입니다. "아니오 - 우리가 데이터베이스에 액세스 할 수 없기 때문에 보안은 어렵습니다. , 등 ". 해커가 데이터베이스 등을 다운로드합니다. 바이러스는입니다. 신용 카드, 전자 메일 주소, 전화 번호, 암호를 입력하고 이름을 지정하면 손상 될 수 있습니다.
- 실제 암호는 두 가지입니다. 하나는 누군가의 머리에 저장된 암호이고 다른 하나는 인증 된 사용자 (예 : 물리적 토큰) 만 액세스 할 수있는 강력한 임의 값입니다. 보안 키가 전자 메일 주소에서만 파생 될 수 있다고 생각하거나 데이터베이스에 암호를 저장해야하는 경우 보안을 실제로 이해하지 못합니다.
나는 OAuth 제공 업체가 OAuth 클라이언트에게 사용자와 클라이언트에 안전하게 연결된 불변 값을 제공 할 수 있는지 여부를 알아 내려고 노력했는지를 추측합니다. 이는 키로만 잠금을 해제 할 수 있습니다. OAuth 제공자는 사용자의 비밀 (인증 비밀번호)과 클라이언트의 비밀 (OAuth 프로토콜에서 사용됨)의 조합을 사용합니다. 클라이언트는이 값을 사용하여 사용자 데이터에 대해 적절한 수준의 보안을 제공 할 수 있습니다.
물론이 구현은 악용에 완벽하지는 않지만 올바르게 구현되면 OAuth 스키마의 우수 사례를 사용하면서 데이터를 보호하는 합리적인 방법을 제공 할 수 있습니다.
나는 너무 광범위하게 결론 지었다. 그러나, 나는 그 질문이 좋은 것이라고 생각하며 잘 물었다. 나는이 같은 질문이 닫혀 있어야하는지 아닌지에 대해 결코 확신 할 수 없다. 질문은 분명히 프로그래머의 관점에서이지만 stackoverflow의 범위 내에서 프로그래밍 질문입니까? –
정확히 어떻게 사용자 ID와 같이 비밀이 아닌 것에서 비밀을 파생시킬 계획입니까? 암호와 전자 메일 주소는 변경할 수 있으며 변경 될 수 있음을 기억하십시오. 유일한 상수는 사용자 ID이며 이는 비밀이 아닙니다. 임의의 암호를 생성하여 사용자 ID와 연관된 데이터베이스에 저장해야합니다. 그러나 데이터베이스의 데이터를 암호 해독하는 데 사용 된 암호도 데이터베이스에 있으므로 무의미합니다. –
당신이 원하는 것을 얻을 수 없다고 생각합니다. 데이터에 액세스해야하는 경우 키에 액세스해야합니다. '사용자의 비밀'과 '고객의 비밀'은 별개의 것이 아닙니다. OAuth는 사용자가 자신이 말하는 사람인지 확인하는 데 사용됩니다. 사용자는 신뢰할 수 있는지 여부를 결정해야합니다. –