프로젝트의 크기와 요구 사항에 따라 다릅니다.
사용자에 대한 데이터를 목적과 요구 사항이 다른 두 세트로 나눌 수있는 한 가지 방법을 볼 수 있습니다.
- 아이디 데이터 : 사용자 이름, 비밀번호 해시, 이메일 주소, 마지막 로그인 시간 등
- 사용자 기본 설정, 최신 활동, 상태 업데이트 등이 포함 된 사용자 프로필 데이터
어느 카테고리에 속할 수있는 사용자에 대한 속성이 있습니다 (예 : 사용자의 생년월일). 그러나이 두 세트의 차이점은 첫 번째 세트는 엄격하게 제어되며 특정 워크 플로를 통해서만 수정할 수 있다는 것입니다. 예를 들어, 비밀번호를 변경하려면 기존 비밀번호를 제공해야하고 이메일을 변경하면 이메일 확인이 필요할 수 있으며 사용자가 비밀번호를 잊어 버린 경우에 사용됩니다.
기본 설정에는 이러한 ACL이 필요하지 않으며 사용자가 동의 한 한 이론적으로 사용자 나 다른 응용 프로그램에서 수정할 수 있습니다. 응용 프로그램이 악의적으로 또는 버그로 인해 데이터가 손상되거나 데이터를 수정하려고 시도하는 경우 위험이 적습니다 (다른 보안 조치를 취한 경우). 그러나 사용자 이름, 암호 또는 전자 메일 중 하나라도 수정 될 수있는 경우 일반적으로 재앙이됩니다. 사용자의 신원을 확인하거나 서비스를 거부하거나 관리자를위한 지원 비용 등을 유발하는 데 사용될 수 있기 때문입니다.
따라서 일반적으로 데이터는 두 가지 유형의 시스템에 저장됩니다.
- 자격 증명 데이터는 일반적으로 디렉토리 또는 IAM 솔루션에 저장됩니다.
- 기본 설정 데이터는 데이터베이스에있게됩니다.
실제로 사람들은 이러한 규칙을 위반하고 하나 또는 다른 규칙 (예 : ASP.NET 멤버 자격 공급자 뒤에있는 SQL 서버)을 사용하게됩니다.
ID 데이터가 커지거나이를 사용하는 조직이 커짐에 따라 여러 유형의 문제가 발생합니다. 예를 들어, 디렉토리의 경우 비밀번호 변경 사항을 다중 서버 환경의 모든 서버에 즉시 복제하려고 시도합니다. 그러나 사용자 기본 설정에는 최종 일관성 만 필요합니다. (FYI : 두 가지 모두 CAPS 정리의 최적화가 다릅니다.)
마지막으로 디렉토리 (예 : 온라인 / 클라우드 디렉토리)는 OAUTH (예 : Facebook, Google, Microsoft 계정, ADFS 고려)와 같은 프로토콜을 사용하여 다른 리소스에 대한 액세스 토큰을 발급하지만 데이터베이스에는 그러한 요구가 없습니다. 데이터베이스는 디렉토리가 필요없는 매우 복잡한 조인 및 쿼리 구조를 지원합니다.
자세한 내용은 신원 디렉토리 대 데이터베이스에 대한 몇 가지 검색이 도움이 될 것입니다.
결국 타사와의 통합 (및 사용중인 대상)을 포함하여 시나리오가 미래에있을 것으로 예상됩니다. 잘 포함 된 프로젝트이고 사용자 ID 데이터를 보호하고 올바르게 인증 할 수 있다고 확신하는 경우 데이터베이스를 사용할 수 있습니다. 그렇지 않으면 자격 증명 디렉토리를 조사 할 가치가 있습니다.
DB, IMO를 사용한다면 하나의 DB와 2를 사용하면 결국 사용자와 응용 프로그램 모두에 대한 액세스 제어가 이루어집니다.