UserConsentVerifier 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
확인 디바이스(예: Microsoft Passport PIN, Windows Hello 생체 인식 또는 지문 판독기)의 가용성을 확인하고 확인을 수행합니다.
public ref class UserConsentVerifier abstract sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class UserConsentVerifier final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public static class UserConsentVerifier
Public Class UserConsentVerifier
- 상속
- 특성
Windows 요구 사항
디바이스 패밀리 |
Windows 10 (10.0.10240.0에서 도입되었습니다.)
|
API contract |
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)
|
예제
C를 사용하는 데스크톱 앱#
데스크톱 앱의 경우 UserConsentVerifier.RequestVerificationAsync 메서드를 호출하는 대신 다음을 수행해야 합니다.
- 먼저 HWND(창 핸들)를 검색합니다. 이 항목에는 WinUI(Windows UI 라이브러리) 3, WPF(Windows Presentation Foundation) 및 Windows Forms(WinForms)에 대한 코드 예제가 포함되어 있습니다. 해당 코드를 아래 코드 목록에 연결합니다.
- 그런 다음 Windows.Security.Credentials.UI.UserConsentVerifierInterop C# interop 클래스의 RequestVerificationForWindowAsync 메서드를 호출합니다. C# interop 클래스에 대한 자세한 내용은 .NET 앱에서 interop API 호출을 참조하세요. CoreWindow에 의존하는 WinRT UI 개체 표시도 참조하세요.
private async System.Threading.Tasks.Task<string> RequestConsent(string userMessage)
{
string returnMessage;
// Retrieve the window handle of the current WinUI 3 window.
var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
// Use the interop interface to request the logged on user's consent via device authentication
var consentResult = await Windows.Security.Credentials.UI.UserConsentVerifierInterop.RequestVerificationForWindowAsync(hwnd, userMessage);
switch (consentResult)
{
case Windows.Security.Credentials.UI.UserConsentVerificationResult.Verified:
returnMessage = "User verified.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.DeviceBusy:
returnMessage = "Authentication device is busy.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.DeviceNotPresent:
returnMessage = "No authentication device found.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.DisabledByPolicy:
returnMessage = "Authentication device verification is disabled by policy.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.NotConfiguredForUser:
returnMessage = "Please go to Account Settings to set up PIN or other advanced authentication.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.RetriesExhausted:
returnMessage = "There have been too many failed attempts. Device authentication canceled.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.Canceled:
returnMessage = "Device authentication canceled.";
break;
default:
returnMessage = "Authentication device is currently unavailable.";
break;
}
return returnMessage;
}
C를 사용하는 UWP(유니버설 Windows 플랫폼) 앱#
이 코드 예제는 UWP(유니버설 Windows 플랫폼) 앱용입니다. 지문 확인 요청을 표시한 다음 결과를 설명하는 메시지를 반환합니다. 이 코드는 UWP 앱에 적합한 UserConsentVerifier.RequestVerificationAsync 메서드를 호출합니다.
private async System.Threading.Tasks.Task<string> RequestConsent(string userMessage)
{
string returnMessage;
// Request the logged on user's consent via authentication device.
var consentResult = await Windows.Security.Credentials.UI.UserConsentVerifier.RequestVerificationAsync(userMessage);
switch (consentResult)
{
case Windows.Security.Credentials.UI.UserConsentVerificationResult.Verified:
returnMessage = "User verified.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.DeviceBusy:
returnMessage = "Authentication device is busy.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.DeviceNotPresent:
returnMessage = "No authentication device found.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.DisabledByPolicy:
returnMessage = "Authentication device verification is disabled by policy.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.NotConfiguredForUser:
returnMessage = "Please go to Account Settings to set up PIN or other advanced authentication.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.RetriesExhausted:
returnMessage = "There have been too many failed attempts. Device authentication canceled.";
break;
case Windows.Security.Credentials.UI.UserConsentVerificationResult.Canceled:
returnMessage = "Device authentication canceled.";
break;
default:
returnMessage = "Authentication device is currently unavailable.";
break;
}
return returnMessage;
}
C++/WinRT를 사용하는 데스크톱 앱
데스크톱 앱의 경우 UserConsentVerifier.RequestVerificationAsync 메서드를 호출하는 대신 다음을 수행해야 합니다.
- 먼저 확인을 요청할 창에 대한 핸들을 가져옵니다. WinUI(Windows UI 라이브러리) 3에 대해 이 작업을 수행하는 방법에 대한 자세한 내용은 HWND(창 핸들 검색) 를 참조하세요.
- Windows.Security.Credentials.UI.UserConsentVerifier 개체에 대한 정품 인증 팩터리를 가져옵니다.
- IUserConsentVerifierInterop interop 인터페이스의 RequestVerificationForWindowAsync 메서드를 호출합니다.
winrt::Windows::Foundation::IAsyncOperation<winrt::hstring> MainWindow::RequestConsent(winrt::hstring userMessage)
{
auto lifetime = get_strong();
winrt::hstring returnMessage;
// Retrieve the window handle of the current WinUI 3 window.
HWND hwnd;
winrt::check_hresult(m_inner->as<::IWindowNative>()->get_WindowHandle(&hwnd));
// Use the interop interface to request the logged on user's consent via device authentication
auto interop = winrt::get_activation_factory<winrt::Windows::Security::Credentials::UI::UserConsentVerifier, ::IUserConsentVerifierInterop>();
auto consentResult =
co_await winrt::capture<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult>>(
interop, &::IUserConsentVerifierInterop::RequestVerificationForWindowAsync, hwnd, reinterpret_cast<HSTRING>(winrt::get_abi(userMessage))));
switch (consentResult)
{
case winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult::Verified:
returnMessage = L"User verified.";
break;
case winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult::DeviceBusy:
returnMessage = L"Authentication device is busy.";
break;
case winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult::DeviceNotPresent:
returnMessage = L"No authentication device found.";
break;
case winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult::DisabledByPolicy:
returnMessage = L"Authentication device verification is disabled by policy.";
break;
case winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult::NotConfiguredForUser:
returnMessage = L"Please go to Account Settings to set up PIN or other advanced authentication.";
break;
case winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult::RetriesExhausted:
returnMessage = L"There have been too many failed attempts. Device authentication canceled.";
break;
case winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult::Canceled:
returnMessage = L"Device authentication canceled.";
break;
default:
returnMessage = L"Authentication device is currently unavailable.";
break;
}
co_return returnMessage;
}
설명
UserConsentVerifier를 사용하면 사용자가 특정 작업에 동의해야 할 때마다 확인 요청을 포함하여 앱의 보안을 강화할 수 있습니다. 예를 들어 앱 내 구매 또는 제한된 리소스에 대한 액세스 권한을 부여하기 전에 지문 인증을 요구할 수 있습니다. UserConsentVerifier를 사용하여 CheckAvailabilityAsync 메서드를 사용하여 현재 컴퓨터에 지문 인증이 지원되는지 여부를 확인한 다음 RequestVerificationAsync 메서드를 사용하여 지문 검사에서 사용자 동의를 요청할 수 있습니다.
메서드
CheckAvailabilityAsync() |
Microsoft Passport PIN, Windows Hello 또는 지문 판독기 같은 인증 디바이스를 사용할 수 있는지 여부를 확인합니다. |
RequestVerificationAsync(String) |
Microsoft Passport PIN, Windows Hello 또는 지문 판독기 같은 인증 장치를 사용하여 확인을 수행합니다. 이 API는 UWP(유니버설 Windows 플랫폼) 앱용입니다. 데스크톱 앱에 사용할 대체 API는 UserConsentVerifier 클래스의 예제에 설명되어 있습니다. |