C#
で記述されたデスクトップアプリケーションがあり、3つのユーザーロールといくつかの事前定義されたユーザーがあります。別のユーザーを作成したり、事前定義されたユーザーのパスワードを変更したりすることもできます。アプリはWindows XP以降でオフラインで動作する必要があります。
事前定義されたユーザーが必要な場合、ローカルマシンでユーザー資格情報を操作するための最良の方法は何ですか? Data Protection API
(DPAPI)がこれを処理する最良の方法だと思いましたが、よく理解していれば、1人のWindowsユーザーにしか機能しないため、事前定義されたユーザーを出荷する必要があるため、役に立たないです。アプリのインストールであり、これらの事前定義されたユーザーをソースコードで保持することは間違いなく最善の方法ではありません(インストール後にDPAPIを使用してディスクに保存した場合でも)。
資格情報をテストする必要がありますか、それとも実際に保存する必要がありますか?
ユーザーが特定の資格情報を知っているかどうかを確認するだけの場合は、安全な パスワード鍵導出関数 (たとえば、 PKBDF2 、 BCrypt )を使用します。または SCrypt )代わりに。
資格情報を本当に保存する必要がある場合(たとえば、外部サービスに転送する必要がある場合)、答えはモデルを再考する必要があるということです。