基本認証 (Basic)、ドメイン サーバーのダイジェスト認証、統合 Windows 認証、またはカスタマイズされたフォーム認証と比較すると、クライアント デジタル証明書は展開と管理の点で若干複雑ですが、より安全なアプリケーションもあります。
ASP および ASP.NET でクライアントのデジタル証明書を処理および識別するのは非常に簡単です。 コードは次のとおりです。
ASP (VBScript) 構文:
Dim subject。
subject=Request.ServerVariables("CERT_SUBJECT")
または
subject=Request.ClientCertifate("Subject") '--中国の証明書を持たないサブジェクトに適用
ASP.NET (C#) 構文:
string subject;
HttpClientCertificate hcc = Request.ClientCertificate;
if(hcc.IsValid) = hcc.Subject;
取得される件名の文字列は、サブフィールドのカンマ区切りのリストです。たとえば、C=CN,O=BOC,CN=moslem とすると、文字列を分割して最後の CN 値を取得します (複数の CN の場合があります)。この値はユーザーの共通名、つまり「通常の名前」です。通常はユーザー名または ID です。
デジタル証明書の CN を取得した後、ユーザーの承認などのさらなる処理を実行できます。より効果的なアプローチは、クライアント上でデジタル証明書とフォーム認証を同時に有効にすることで、CN とフォームに入力されたユーザー名の値を比較して一致するかどうかを確認することで多要素認証を実現できると思います。 。
比較的言えば、ASP.NET にはクライアントのデジタル証明書を処理するための専用の HttpClientCertificate クラスが用意されているため、プログラム内で処理する方が便利です。