2013-03-26 2 views
2

제 애플리케이션에서 인증이 필요한 webservices를 반복적으로 호출해야합니다. 사용자는 인증 정보 (사용자 이름 및 암호)를 반복해서 입력하고 싶지 않습니다.비밀번호 검색 및 저장

적어도 응용 프로그램이 실행되는 세션 길이에 대해 암호를 안전하게 저장하는 방법이 있습니까? 사용자가 데이터를 한 번만 입력해야합니까?

현재 암호를 메모리에 보유하고 암호를 입력하고 암호 해독 한 후 서비스 호출에 사용합니다. 하지만 다소 불쾌감을 느낍니다. 이런 종류의 데이터를 처리 할 때 권장되는 방법입니까?

여러 세션에서 사용하기 위해 데이터베이스에 암호를 저장하는 방법은 무엇입니까? 처리 방법이 있습니까? 나는 bcrypt와 pbkdf2에 대해 들었다. 그러나 이들은 단지 해시를 목적으로하고 입력 된 암호를 비교하고 "해독 된"암호를 다시 사용하지 않기위한 것입니다.

또는 keepass (또는 사용할 수있는 모든 것)와 같은 외부 암호 캐시를 사용하는 것이 더 나은 방법일까요?

+0

이것은 웹 응용 프로그램이나 데스크톱 응용 프로그램 (winform, wpf)입니까? –

+0

webservices를 호출하는 wpf 데스크탑 응용 프로그램입니다. –

답변

2

메모리 내 저장소의 경우 내부적으로 SecureString을 사용하는 SecureString 클래스 또는 NetworkCredentials을 사용하십시오.

영구 저장소의 경우 Data Protection API을 사용하여 암호를 암호화하십시오. 이 컴퓨터의 현재 Windows 사용자 만 액세스 할 수있는 키를 사용하여 암호화합니다.

+0

NetworkCredentials 및 데이터 보호 API에 대해 좀 더 자세히 설명해 주시겠습니까? CredentialCache에 대해 읽었으므로 내 요구에 매우 적합합니다. 데이터 보호 API를 추천 해 주시겠습니까? –

+0

NetworkCredentials는 로그인 및 암호를 보유하는 클래스 일뿐입니다. 이것은 프레임 워크의 여러 곳에서 사용됩니다. 또한 암호를 암호화 된 형식으로 메모리에 저장합니다. 데이터 보호 api 설명에 대한 링크를 추가했습니다. 기본적으로 모든 데이터를 실행할 수 있으며 현재 Windows 사용자 만 해독 할 수 있습니다. db 또는 파일에 암호화 된 암호를 저장할 수도 있습니다. – alex

+0

dpapi가 좋습니다. 특히 ProtectedData. 그걸 보지 마라. 고맙습니다 –