이것은 아주 간단한 것처럼 보이지만 지금은 일주일 넘게이를 알아 내려고 노력하고 있으며 알아낼 수 없습니다. WinJS를 사용하여 Windows UWP 응용 프로그램을 만들고 있으며 사용자가 PIV (스마트 카드)/PIN 조합을 사용하여 응용 프로그램에 로그인하려고합니다. 기본적으로 앱이 시작되면 스마트 카드가 기기에 삽입되어 있는지 확인한 다음 PIN을 입력하라는 메시지를 표시합니다. 스마트 카드에 대해 PIN의 유효성을 검사하면 앱에 사용자가 로그인하게됩니다.Windows 용 스마트 카드를 사용하는 사용자 로그인 UWP 앱
현재 Windows 7 응용 프로그램을 사용하고 있으며이 코드를 변환하려고 시도했지만 사용 된 API는 Windows 용으로 유효하지 않습니다 UWP 애플 리케이션. 그 API에 관한 질문을 올렸지 만 어떤 응답도받지 못했습니다 (https://stackoverflow.com/questions/43344679/x509certificate2ui-class-equivalent-with-windows-uwp-and-winjs). Windows 7에서는 X509Certificate2UI (https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2ui(v=vs.110).aspx) 클래스를 사용하여 사용자에게 PIN을 입력하는 인증서를 선택했습니다.
많은 연구를 거친 후 Windows UWP에서 나는 틀릴 수도 있다고 생각합니다. 스마트 카드 API (https://docs.microsoft.com/en-us/uwp/api/windows.devices.smartcards)를 사용해야합니다. 저는 지난 며칠 동안이 책을 읽었으며 다음과 같은 스마트 카드에 대한 여러 Microsoft 문서를 보았습니다 : https://docs.microsoft.com/en-us/windows/uwp/security/smart-cards 그러나 스마트 카드의 PIN에 대해 사용자가 입력 한 PIN의 유효성을 검사하는 방법을 찾을 수 없었습니다.
SmartCardProvisioning 클래스 (https://docs.microsoft.com/en-us/uwp/api/windows.devices.smartcards.smartcardprovisioning)에서 우리는 현재 PIN과 새 PIN을 묻는 requestPinChangeAsync() 메소드를 호출 할 수 있습니다. 현재 PIN을 묻고 PIN이 올바른지 여부를 알려주는 값만 반환한다는 점을 제외하고는 비슷한 기능을 찾고 있습니다.
나는 또한 Microsoft의 Hello (https://docs.microsoft.com/en-us/windows/uwp/security/microsoft-passport) API를 통해 읽었지만 스마트 카드와 함께 사용하는 방법을 보지 못했습니다.
스마트 카드/PIN 조합을 사용하여 앱에서 이중 인증을 사용하는 방법에 대해 올바른 방향을 제시해 줄 수 있습니까? 나는 과거의 며칠 동안 계속해서 구글 거품에 빠져 나와 나가기 위해 도움이 필요한 것처럼 보인다. 이 중복되지 않는 이유
감사
편집 설명 : 정말 아니 중복, 두 질문은 나에 의해 물었다 나는 질문의 BOD의 다른 게시물을 언급했다. 다른 게시물에서 WinJS를 사용하는 Windows UWP의 X509Certificate2UI 클래스에 해당하는 것을 찾고있었습니다. 더 많은 연구를 통해이 게시물로 이동하는 올바른 방법이 아닐 수도 있습니다. 누군가 PIV (스마트 카드) 및 PIN을 사용하여 이중 인증을 수행하는 올바른 방향으로 나를 안내 할 수 있는지보고 싶습니다. 카드와 관련된
편집 : 작동하는 코드 공유 : 다음은 작동하는 것으로 보이는 WinJS 코드입니다. 확실하지 않은 경우 더 좋은 방법이 있습니다.
if (certToUse != null) {
Windows.Security.Cryptography.Core.PersistedKeyProvider.openKeyPairFromCertificateAsync(certToUse, Windows.Security.Cryptography.Core.HashAlgorithmNames.sha256, Windows.Security.Cryptography.Core.CryptographicPadding.rsaPkcs1V15).then(function (keyPair) {
var buffer = 'data to sign'
var data = Windows.Security.Cryptography.CryptographicBuffer.convertStringToBinary(buffer, Windows.Security.Cryptography.BinaryStringEncoding.utf16BE)
Windows.Security.Cryptography.Core.CryptographicEngine.signAsync(keyPair, data).then(function (signed) {
var results = Windows.Security.Cryptography.Core.CryptographicEngine.verifySignature(keyPair, data, signed)
completeValidatePin = true
successCallback(true)
}, function (reason) {
completeValidatePin = true
errorCallback('User cancelled login')
})
}, function (reason) {
completeValidatePin = true
errorCallback('Error using certificate')
})
} else {
errorCallback('Certificate not found')
}
[Windows UWP 및 WinJS와 동일한 X509Certificate2UI 클래스]의 가능한 복제본 (http : // stackoverflow.com/questions/43344679/x509certificate2ui-class-equivalent-with-windows-uwp-and-winjs) –
사실 중복이 아니 어서 두 질문 모두 나에게 물어 봤고 나는 그 질문의 뼈대에 다른 게시물을 언급했다. 다른 게시물에서 WinJS를 사용하는 Windows UWP의 X509Certificate2UI 클래스에 해당하는 것을 찾고있었습니다. 더 많은 연구를 통해이 게시물로 이동하는 올바른 방법이 아닐 수도 있습니다. 누군가 PIV (스마트 카드) 및 PIN을 사용하여 이중 인증을 수행하는 올바른 방향으로 나를 안내 할 수 있는지보고 싶습니다. 카드와 관련된 –
아니요. 샘플을 살펴본 결과 인증서를 요청하고 사용자가 입력 한 PIN의 유효성을 검사 할 수있는 구체적인 방법이 없습니다. 이 샘플에서는 PIN을 변경하고 재설정하는 방법 만 보여줍니다. –