みなさんご利用されていると思いますが、Windows 10や11にはWindows HelloというPINや顔認証、指紋認証の仕組みがあります。
そのWindows Helloでの認証をWindowsのアプリでも利用することができます。
今回はその実装方法についてです。言語はC#でWindows Formsでサンプルアプリを実装したいと思います。
Microsoft.Windows.SDK.Contractsのインストール
Windows Helloを利用するためにNuGetで「Microsoft.Windows.SDK.Contracts」をインストールします。
いつものようにNuGetの管理画面を表示してインストールします。
インストールできました。
Formの作成
とても簡単な以下のような画面を作ります。
「WindowsHello認証」ボタンをクリックすると、Windows Helloの認証が実行され、
認証OKの場合にはメッセージダイアログで「OK」と表示し、
認証NGの場合にはメッセージダイアログで「NG」と表示します。
Windows Hello認証の実装
実装もとても簡単で、以下のような実装になります。
using System; using System.Windows.Forms; namespace WindowsHelloSample { public partial class Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// ボタンクリック時の処理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void button1_Click(object sender, EventArgs e) { var available = await Windows.Security.Credentials.UI.UserConsentVerifier.CheckAvailabilityAsync(); if (available == Windows.Security.Credentials.UI.UserConsentVerifierAvailability.Available) { var result = await Windows.Security.Credentials.UI.UserConsentVerifier.RequestVerificationAsync("Sampleアプリの認証を行います"); if (result == Windows.Security.Credentials.UI.UserConsentVerificationResult.Verified) { MessageBox.Show("OK"); } else { MessageBox.Show("NG"); } } else { MessageBox.Show("Windows Helloに対応していない端末です。"); } } } }
Windows.Security.Credentials.UI.UserConsentVerifier.CheckAvailabilityAsync()
でWindows Helloに対応しているかをチェックし、チェックOKの場合にWindows.Security.Credentials.UI.UserConsentVerifier.CheckAvailabilityAsync()
で認証を実行し、戻り値がVerified
であれば認証OKとなります。
動かしてみる
ボタンをクリックするとWindows Helloのダイアログが表示され、PIN入力または顔認証、指紋認証を行うことができます。
まとめ
認証機能があるWindowsアプリを開発する際は、Windows Hello認証機能も入れてみてはいかがでしょうか。
Windowsと同じように毎回パスワードを入力する手間が省けるので、便利だと思います。