2014-10-02 206 views
3

我正在做一個測試項目,爲我們未來的項目嘗試spring引導。SPRING BOOT配置Jasig CAS

我們正在使用jasig CAS,我正在嘗試使用spring引導和嵌入式tomcat服務器進行配置。

所以我加在pom.xml彈簧引導啓動安全

之後,我嘗試配置WebSecurityConfig - >彈簧提供的類與中科院配置,比如我需要配置一個入口點:

@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不被應用reconized。

這個班似乎沒有用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?

這裏是我的CAS經典的server.xml配置:

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的?

感謝

回答

6

假設你正在使用spring-boot-starter-parent作爲項目的父(或將它導入到你自己的<dependencyManagement>部分),你並不需要聲明一個版本爲spring-security-cas依賴的啓動已經爲提供依賴管理它。你可以這樣做:

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

SSL配置是covered in the reference docs。你只需要指定屬性的少數配置密鑰庫等。例如:

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

N.B. application.properties中配置SSL的聲明樣式是新的。我還計劃在1.2.0發佈之前稍微更改屬性名稱。舊版本中有一個示例,向您展示如何以編程方式執行此操作。 – 2014-10-02 18:41:29

+0

只要你在最近的1.1.x版本中,它就會被回溯,所以你會好的 – 2014-10-02 18:45:21

+0

感謝您的快速回復Andy! – partyboy 2014-10-03 06:22:15

1

我是一個有點困惑,我試圖完成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(沒有嵌入,我的配置是我的第一篇),它完美的作品。

我想念什麼?

+0

忘記了早些時候迴應,但這是證書問題的錯誤。現在一切正常!乾杯 – partyboy 2014-10-17 12:16:18