2009-10-12 6 views
2

C# 응용 프로그램 개발중인 응용 프로그램 사용자 (예 : 응용 프로그램 기본 설정, 사용 권한 등)에 대한 메타 데이터를 저장해야합니다. 우리는 인증/인증을 위해 AD를 사용하고 있습니다.AD 계정의 데이터베이스에 SID 또는 사용자 이름을 저장 하시겠습니까?

AD 계정을 식별하려면 응용 프로그램 데이터베이스에 SID 또는 DOMAIN/Username을 저장하는 것이 더 좋습니까?

답변

2

나는

  • 당신이 SID를 저장하는 경우, 당신은 응용 프로그램을 파괴하지 않고 계정의 이름을 바꿀 수 있습니다 ...이 두 가지 일을했지만, 그것은 사람이 읽을 수 없습니다.
  • 사용자 이름을 저장하면 쉽게 읽을 수 있지만 계정의 이름이 변경되면 데이터를 업데이트해야합니다.
+0

내 특정 프로젝트의 경우 사용자 이름을 저장하기로 결정했습니다. 주된 이유는이 초기 릴리스가 데이터베이스에서 직접 편집해야하기 때문입니다. 어떤 시점에서 SID를 사용하여 마이 그 레이션하는 목적으로 계정 관리 화면을 작성합니다 – eyesnz

3

나는 SID를 저장하고 해당 계정과 관련된 이름을 표시해야 할 경우 LookupAccountSID를 사용합니다.

+0

SID 및 사용자 이름을 데이터베이스 테이블에 저장하려고합니다. 어떤 DBType을 SID에 대해 내 열로 선택할 수 있습니까? ** SecurityIdentifier.Value ** ** uniqueidentifier **로 변환 될 수 있는지 여부 또는 SID를 문자열로 저장하는 것이 좋습니다. – user3373603

+0

나는 아마도 문자열로 갈 것이다. –

2

우리는 두 클래스를 연결하고 sid에 대해서만 비교할 수있는 작은 클래스를 만들었습니다. 형식은 다음 문자열과 유사하다 : 이것은 우리 데이터베이스와 디버거에서 '쉬운'이름으로 할 수

"Domain\\User\nS-1-5-21-...........-1129" 

, 아직 모든 바인딩은 값의 SID 부분에 실제로.

사용자 이름이 변경되면 어떻게됩니까? 데이터가 오래되어서 그대로 유지됩니다.

현재이 작업을 수행하면 개체에 '표시 이름'을 표시 할 수 없기 때문에 개체에서 '표시 이름'을 가져올 수 없습니다. 사용자가 부실했을 수 있습니다. 대신 SID를 계정 이름으로 올바르게 확인하는 LookupUserName() 루틴을 제공하십시오.

마지막으로 SID를 저장해야합니다. 당신은 JDoe를 저장하고 싶지 않습니다. Jane이 종료하고 John이 한달 후에 시작하면 갑자기 액세스 할 수 있습니까?

관련 문제