У нас есть веб-приложение ASP.NET, работающее в IIS, с примерно 200 пользователями, некоторые из которых находятся внутри нашей локальной сети, а другие - за пределами нашей локальной сети. У каждого пользователя есть учетная запись с идентификатором пользователя и пароль для входа.
Помимо этих учетных данных, мы хотим добавить дополнительную безопасность для доступа к этому веб-приложению с помощью этого требования:
Пользователь получит доступ к этому веб-приложению только со своего ПК. Если пользователь переходит в другое место и / или использует другой ПК, и даже если его учетные данные были правильными, то он / она не сможет получить доступ к этому веб-приложению.
Нам сказали, что мы можем частично удовлетворить это требование с помощью клиентских сертификатов. Если сертификат на стороне клиента хранится на ПК пользователя и IIS настроен на прием сертификатов на стороне клиента, то только ПК с сертификатом клиента смогут подключиться к IIS.
Однако можно ли каким-то образом связать учетные данные пользователя с сертификатом на стороне клиента, хранящимся на компьютере пользователя?
Потому что пользователь может перейти на другой компьютер, на котором хранится сертификат на стороне клиента, и получить доступ к веб-приложению со своим собственным логином с учетными данными. Мы хотим, чтобы пользователь имел доступ к веб-приложению только с назначенного ему компьютера, а не с другого компьютера.
Клиентские сертификаты предназначены для одного: для проверки подлинности субъекта безопасности, который пытается получить доступ к приложению. В случае клиентских сертификатов сертификат обычно сопоставляется с учетной записью пользователя.
Если вы хотите контролировать доступ для данной учетной записи в зависимости от того, где (имя компьютера и / или IP-адрес) учетная запись аутентифицируется, приложение - лучшее место для этой проверки доступа.
Если вы хотите запретить пользователю экспортировать сертификат с закрытым ключом и импортировать его на другой компьютер, вы можете пометить закрытый ключ как неэкспортируемый при импорте сертификата. Это может предложить некоторое сдерживание, но это всего лишь ограничение в графическом интерфейсе, и если их сертификат уже существует на других компьютерах или использует тип профиля (перемещаемый), который позволит сертификату быть доступным на другом компьютере, это может не будет подходящим вариантом.