ВЕСНА БУТ Конфигурация с Jasig CAS

Я делаю тестовый проект, чтобы попробовать весеннюю загрузку для наших будущих проектов.

Мы используем jasig CAS, и я пытаюсь настроить его при помощи весенней загрузки и встроенного сервера Tomcat.

Поэтому я добавляю в pom.xml spring-boot-starter-security

После этого я пытаюсь настроить WebSecurityConfig -> spring предоставляет классы для настройки с помощью cas, например, мне нужно настроить точку входа:

@Bean
public CasAuthenticationEntryPoint casAuthenticationEntryPoint() {
    CasAuthenticationEntryPoint casAuthenticationEntryPoint = new CasAuthenticationEntryPoint();
    casAuthenticationEntryPoint.setLoginUrl("https://localhost:9443/cas/login");
    casAuthenticationEntryPoint.setServiceProperties(serviceProperties());
    return casAuthenticationEntryPoint;
}

Вот первая проблема: класс org.springframework.security.cas.web.CasAuthenticationEntryPoint не ревизуется приложением.

Кажется, что класс не импортирован с spring-boot-starter-security.

Какова лучшая практика? Нужно ли вручную добавлять зависимость в мой pom, как я делал раньше?

пример:

<dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-cas</artifactId>
        <version>${spring-security.version}</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>

Если да, то какую версию мне нужно использовать, чтобы соответствовать пакету загрузочной версии и избежать конфликтов?

Второй момент - как мне настроить встроенный tomcat для включения ssl с сертификатом?

Вот моя классическая конфигурация server.xml для CAS:

Connector emptySessionPath="true" port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" URIEncoding="UTF-8"
    maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" 
           keystoreFile="C:\***\***\***\.keystore" keystorePass="***"
    truststoreFile="C:\Program Files\Java\jdk1.7.0_67\jre\lib\security\cacerts"
compression="on"
     compressionMinSize="2048"
     noCompressionUserAgents="gozilla, traviata"
     compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript"/>

Можно ли настроить keystorefile/truststorefile со встроенным tomcat?

Спасибо

2 ответа

Предполагая, что вы используете spring-boot-starter-parent как родитель вашего проекта (или импортировать его в свой <dependencyManagement> раздел), вам не нужно объявлять версию для spring-security-cas зависимость, так как Boot уже обеспечивает управление зависимостями для него. Вы можете просто сделать это:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-cas</artifactId>
</dependency>

Конфигурация SSL описана в справочных документах. Вам просто нужно указать несколько свойств для настройки хранилища ключей и т. Д. Например:

server.port = 8443
server.ssl.key-store = keystore.jks
server.ssl.key-store-password = secret
server.ssl.key-password = another-secret

Я немного запутался, я пытаюсь завершить настройку SSL, но все еще сталкиваюсь с проблемой.

Вот моя конфигурация tomcat с пружинной загрузкой:

server.port = 8080
server.ssl.key-store = C:\\dev\\web\\tomcat\\.keystore
server.ssl.key-store-password = changeit
server.ssl.key-password = changeit
server.ssl.trustStore = C:\\Program Files\\Java\\jdk1.7.0_67\\jre\\lib\\security\\cacerts
server.ssl.trustStorePassword = changeit

Я запускаю приложение, нет проблем, я перенаправлен на мой сервер CAS, я ввожу логин / пароль, нажимаю ввод, затем я получаю сообщение об ошибке:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Это как если мой сертификат не работает, но когда я использую tomcat классическим способом (не встроенным, моя конфигурация в моем первом посте), он работает отлично.

Я что-то пропустил?

Другие вопросы по тегам