По сравнению с базовой проверкой подлинности (Basic), дайджест-проверкой подлинности сервера домена, встроенной проверкой подлинности Windows или настраиваемой проверкой подлинности с помощью форм цифровые сертификаты клиента немного сложнее с точки зрения развертывания и управления, но они также более безопасны. Некоторые из них также более гибки в применении.
В ASP и ASP.NET очень легко обрабатывать и идентифицировать цифровые сертификаты клиентов. Код следующий:
Синтаксис ASP (VBScript):
Dim subject.
subject=Request.ServerVariables("CERT_SUBJECT")
или
subject=Request.ClientCertifate("Subject") ' -- Применимо к субъекту без китайского сертификата
ASP.NET (C#) Синтаксис:
строковый субъект;
HttpClientCertificate hcc = Request.ClientCertificate;
if(hcc.IsValid) = hcc.Subject;
Полученная строка темы представляет собой список подполей, разделенных запятыми. Например, C=CN,O=BOC,CN=moslem, затем разделите строки и возьмите последнее значение CN (может быть более одного CN). Это значение является общим именем пользователя, которое является «обычным именем». обычно имя пользователя или идентификатор.
После получения CN в цифровом сертификате вы можете выполнить дальнейшую обработку, например авторизацию пользователя. Я думаю, что более эффективный подход — одновременное включение цифровых сертификатов и аутентификации по форме на клиенте. Многофакторную аутентификацию можно обеспечить путем сравнения значений имени пользователя, введенных в CN и форме, чтобы увидеть, совпадают ли они. .
Условно говоря, ASP.NET предоставляет выделенный класс HttpClientCertificate для обработки цифровых сертификатов клиентов, поэтому удобнее обрабатывать его в программе.