2

こんにちは、ユーザーがパスワードまたはスマートカードを介して自分のコンピューターにログインしているかどうかを WPF アプリケーションで確認する必要があります。会社のクライアントでは両方のログイン オプションを使用できますが、アプリケーションはスマート カード ログインでのみ開く必要があります。すべてのクライアントは Windows 7 OS です。

私はいくつかのサイトを見ています: http://technet.microsoft.com/en-us/library/ff404285(v=ws.10).aspx http://www.codeproject.com/Articles/240655/Using-a- NET-Security-i付きスマートカード証明書

拡張キー使用法 (EKU) 属性フィールドを取得する必要があると考えています。EKU が空の場合 => ユーザーはスマートカードではなくパスワードでログインされています。

この簡単なチェックだけが必要です。証明書 atc の作成/検証は気にしません。

4

1 に答える 1

2

Windows はログオンに使用された証明書を記録しないため、EKU を確認できません。また、Windows は使用された資格情報の種類を記録しないため、簡単な解決策はありません。いくつかの提案があります:

オプション 1:認証メカニズム アシュアランスを使用して、ユーザーがスマート カードでログオンするときにユーザーのアクセス トークンに追加のグループ メンバーシップを追加し、そのグループ メンバーシップを要求するようにアプリを設定します。これには、Windows Server 2008 R2 機能レベルまでのドメインが必要です。

オプション 2:資格情報マネージャーを実装し、 NPLogonNotifyコールバックを使用して、KerbSmartCardLogonの KERB_LOGON_SUBMIT_TYPE でKERB_INTERACTIVE_LOGONを確認し、アプリが確認できるようにどこかに記録します。

于 2012-06-01T10:27:11.187 に答える