2013-09-05 12 views
2

사용자 인증을 위해 응용 프로그램에서 자격 증명 선택 도구를 사용하고 있습니다. 내 DB의 인증 세부 정보는 문자열 형식입니다. 그러나 Credential Picker가 전달하는 암호는 암호화 된 형식 (기본적으로 인증 프로토콜 협상)이므로 암호를 해독하여 해당 DB 암호와 일치시킬 수 있습니다. DB에 저장된 암호와 암호 일치를 수행하는 가장 좋은 방법은 무엇입니까? 당신은 CredentialPickerPickAsync 방법에 대한 CredentialPickerOptions 객체를 사용할 필요가자격증 명 선택기의 암호

function launchCredentialPicker() { 
    Windows.Security.Credentials.UI.CredentialPicker.pickAsync("My Target", "My Message", "my Caption").then(function (results) { 

     var domainName = results.credentialDomainName; 
     WinJS.Application.sessionState.Username = results.credentialUserName; 
     WinJS.Application.sessionState.Password = results.credentialPassword; 
     WinJS.Application.sessionState.RememberPassword = (results.credentialSaveOption === Windows.Security.Credentials.UI.CredentialSaveOption.hidden) ? "Hidden" : 
           ((results.credentialSaveOption === Windows.Security.Credentials.UI.CredentialSaveOption.selected) ? "Selected" : "Unselected"); 

    }); 
} 
+1

데이터베이스에 암호화되지 않은 암호를 저장하는 것은 매우 나쁜 생각입니다. –

+0

다른 점입니다. 자격증 명 선택 도구 (암호화되고 동적으로 생성 된)에서 나오는 암호를 DB 암호와 일치시키는 방법을 알려주십시오. –

+0

암호가 해시 또는 암호화되어 있습니까? 해시 된 경우 (가능성이 높음) 원래 비밀번호를 확인할 수 없습니다. 암호화 된 경우 해독하기 위해 공유 키 또는 비공개 키가 필요합니다. –

답변

3

: 아래 코드입니다. 기본 인증을 사용하도록 CredentialPickerOptions을 구성하면 사용자가 입력 한 암호를 볼 수 있습니다.

var options = new Windows.Security.Credentials.UI.CredentialPickerOptions(); 
options.authenticationProtocol = Windows.Security.Credentials.UI.AuthenticationProtocol.basic; 

Windows.Security.Credentials.UI.CredentialPicker.pickAsync(options).then(/* */); 
+0

감사하지만 교섭, Kerber, NTLM 등과 같은 다른 인증 프로토콜을 사용하는 방법은 무엇입니까? 디버깅 모드에서 동일한 암호의 경우 이러한 인증 프로토콜을 사용할 때 다른 해시 값이 반환됩니다. Basic을 사용해야 할 때 이러한 프로토콜을 어떻게 사용합니까? 그리고 알고 있다면 로그인 목적으로이 프로토콜을 사용하는 방법을 알려주시겠습니까? 감사. –