Spring-Security с X509?

Я новичок в весенней безопасности в целом и немного смущен.

Проект, который я пытаюсь интегрировать, использует сертификаты X509 для идентификации пользователей для входа в приложение. Нет ни логинов, ни паролей. Мы проверяем, что сертификаты хороши и что им предоставлен доступ к нашему приложению.

Вопрос в том, как интегрировать Spring в это, чтобы получить их роли с использованием сертификатов X509?

Я видел это:

<http>
 ...
    <x509 subject-principal-regex="CN=(.*?)," user-service-ref="userService"/>
 ...
</http>

Но я не понимаю, как это работает. Будет ли он по-прежнему требовать что-то для пароля? Или предмет все, что ему нужно?


person Jacob Schoen    schedule 08.06.2010    source источник


Ответы (2)


Но я не понимаю, как это работает. Будет ли он по-прежнему требовать что-то для пароля? Или предмет все, что ему нужно?

Я думаю, что это все, что нужно. Я считаю, что модель заключается в том, что протокол TLS определяет, что пользователь/клиент «владеет» сертификатом, используя методы шифрования с открытым ключом, которые сводятся к тому, что пользователь/клиент знает закрытый ключ для сертификата. Предполагается, что только пользователь будет знать свой закрытый ключ, и поэтому тот, кто/что-то может доказать знание ключа, является пользователем.

person Stephen C    schedule 08.06.2010

По крайней мере, для браузера, обращающегося к вашему сервису, пользователю будет предложено ввести пароль, который использовался при создании сертификата X509. Вы можете создавать сертификаты без паролей, но это не так безопасно.

Браузер и ваш контейнер сервлета будут обрабатывать рукопожатие SSL после того, как пользователь введет пароль, а затем, если все в порядке, вы можете использовать свою реализацию UserDetailsService для заполнения Principle любыми ролями, которые есть у пользователя.

person Gandalf    schedule 08.06.2010