clientCertificateを読み取るASP.netサイトを開発して、スマートカードがWebサイトへのアクセスに使用されたことを確認しようとしています(ユーザー名/パスワードのログインを廃止しようとしています)。
私が考えているプロセスは次のとおりです。
- ユーザーがアカウントを登録し、C#がユーザーのclientCertificate(パブリック)を記録します。
- その後、ユーザーは同じclientCertificateを使用して次回ログインでき、ハッシュが有効な場合は認証されたユーザーになります。
- 証明書の信頼性を確保するために、以下のコードを使用します。ブラウザは秘密鍵を処理し、証明書が偽造されていないことを確認する必要があります。
- 件名と証明書の組み合わせに基づいて、C#はそれらに役割アクセスを割り当てます。
次のコードは、証明書の信頼性に使用できますか?
X509Certificate x509Cert = new X509Certificate(Request.ClientCertificate.Certificate);
SHA1 sha = new SHA1CryptoServiceProvider();
byte[] hashvalue = sha.ComputeHash(Request.ClientCertificate.Certificate);
byte[] x509Hash = x509Cert.GetCertHash();
// compare x509Hash WITH hashvalue to ensure they are a match.
// If not, possibly faked certificate, not a real smartcard???
これは、SmartCard認証プロセスが機能する方法ですか?