2016-12-27 3 views
2

ASP.NET 웹 API 서버가있는 WPF 클라이언트가 있습니다. 웹 API가 해당 사용자의 다중 로그인 시도를 차단할 수 있도록 클라이언트를 사용하는 특정 Windows 사용자에 대해 고유 한 키를 생성하고 싶습니다. 먼저 다음을 사용하는 것으로 간주했습니다.하나의 Windows 사용자에 대해 고유 한 키 생성

Environment.UserDomainName + "\" + Environment.UserName 

그러나 많은 사용자가 같을 수 있습니다. 컴퓨터 이름을 포함하고 싶지 않습니다. 왜냐하면 내가 사용하는 컴퓨터가 무엇이든간에 그 사용자를 추적하기를 원하기 때문입니다. UserDomainName + "\" + Environment.UserName 콤보를 사용하는 클라이언트 응용 프로그램을 사용하는 특정 Windows 사용자에게 고유 한 키를 만들 수있는 방법은 무엇입니까?

NB : 방지하기 위해 자신의 키를 변경하는 사용자가이 유효 할 것 잠기기 있도록 키가 사용자에 의해 변경에 카드 키되어야한다. 로컬 데이터베이스가 없기 때문에 키는 사용자의 홈 디렉토리에있는 사용자 설정 파일에 저장됩니다. 그러나 파일 저장 위치는 중요하지 않으며 컴퓨터의 관리자가 액세스 할 수 있으며 일반 사용자는 관리자가됩니다.

key = Guid.NewGuid() + "\\" + Environment.UserDomainName + "\\" + Environment.UserName; 

하나의 문제는 당신이 저장할 수이를 방지하기 위해 동일한 GUID가 재생됩니다 정말 작은 기회가 있다는 것입니다 모든 '사용 :

답변

2

당신은 같은 GUID 시스템, 그리고 뭔가를 사용할 수 있습니다 '목록/사전에 GUID를 넣고 복제본을 재생성합니다.

+0

갈 길은 길입니다. 그것은 그것이 목적입니다. – Kelly

+0

감사합니다. Hisham, 아주 좋은 생각입니다.하지만 사용자가 키를 변경했는지 감지 할 수 있기를 바랍니다. 원래의 키로 인해 액세스가 차단 된 경우 위에 사용 된 구조체에 연결된 체크섬은이를 확인하는 한 가지 방법이지만, 체크섬이 내장 된 알려진 알고리즘으로 해시하는 등의 간단한 방법이있을 수 있습니다. 실제 사용자 이름 정보는 필요하지 않습니다. 사용자를 식별하기 위해 Identity는 나중에 Jwt를 사용하여이를 수행합니다. OP 편집을 참조하십시오. – ProfK

+1

전체 사용자 설정 파일 만 암호화하면 방법이 매우 안전합니다. 그들은 비즈니스에 액세스하지 않지만 "기본 설정"보기를 통해 물론 사용자 키를 포함하지 않습니다. – ProfK