Share via


UserConsentVerifier Klasse

Definition

Überprüft die Verfügbarkeit eines Überprüfungsgeräts (z. B. eine Microsoft Passport-PIN, Windows Hello biometrischen Oder Fingerabdruckleser) und führt eine Überprüfung durch.

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
Vererbung
Object Platform::Object IInspectable UserConsentVerifier
Attribute

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Beispiele

Desktop-Apps mit C#

Für eine Desktop-App müssen Sie folgendes ausführen, anstatt die UserConsentVerifier.RequestVerificationAsync-Methode aufzurufen:

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;
}

Universelle Windows-Plattform-Apps (UWP) mit C#

Dieses Codebeispiel gilt für eine Universelle Windows-Plattform-App (UWP). Es wird eine Anforderung für die Fingerabdrucküberprüfung angezeigt, gefolgt von der Rückgabe einer Nachricht, die das Ergebnis beschreibt. Der Code ruft die UserConsentVerifier.RequestVerificationAsync-Methode auf, die für UWP-Apps geeignet ist.

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;
}

Desktop-Apps mit C++/WinRT

Für eine Desktop-App müssen Sie folgendes ausführen, anstatt die UserConsentVerifier.RequestVerificationAsync-Methode aufzurufen:

  • Rufen Sie zunächst das Handle für das Fenster ab, in dem die Überprüfung angefordert wird. Ausführliche Informationen dazu für die Windows UI Library (WinUI) 3 finden Sie unter Abrufen eines Fensterhandles (HWND).
  • Rufen Sie die Aktivierungsfactory für das Windows.Security.Credentials.UI.UserConsentVerifier-Objekt ab .
  • Rufen Sie die RequestVerificationForWindowAsync-Methode der IUserConsentVerifierInterop-Interop-Schnittstelle auf.
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;
}

Hinweise

Sie können UserConsentVerifier verwenden, um die Sicherheit Ihrer App zu erhöhen, indem Sie eine Überprüfungsanforderung einfügen, wenn der Benutzer einer bestimmten Aktion zustimmen muss. Sie können z. B. eine Fingerabdruckauthentifizierung erfordern, bevor Sie einen In-App-Kauf oder Zugriff auf eingeschränkte Ressourcen autorisieren. Sie können userConsentVerifier verwenden, um zu bestimmen, ob die Fingerabdruckauthentifizierung für den aktuellen Computer unterstützt wird, indem Sie die CheckAvailabilityAsync-Methode verwenden. Anschließend können Sie mithilfe der RequestVerificationAsync-Methode die Zustimmung des Benutzers aus einem Fingerabdruckscan anfordern.

Methoden

CheckAvailabilityAsync()

Überprüft, ob ein Authentifizierungsgerät, z. B. eine Microsoft Passport-PIN, Windows Hello oder Fingerabdruckleser, verfügbar ist.

RequestVerificationAsync(String)

Führt eine Überprüfung mit einem Authentifizierungsgerät wie Microsoft Passport PIN, Windows Hello oder einem Fingerabdruckleser durch. Diese API ist für Universelle Windows-Plattform-Apps (UWP) vorgesehen. Die alternative API für eine Desktop-App wird unter Beispiele in der UserConsentVerifier-Klasse beschrieben.

Gilt für:

Weitere Informationen