我正在創建一個Spring Boot應用程序,該應用程序只能由LDAP中的用戶訪問。此應用程序應該部署到Tomcat服務器(而不是嵌入式服務器)。對LDAP的配置在Tomcat本身做:通過Tomcat進行Spring Boot LDAP身份驗證(預認證)
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Realm className="org.apache.catalina.realm.JNDIRealm"
connectionURL="ldap://someldapserver:389"
userPattern="uid={0},dc=example,dc=com"
roleBase="dc=example,dc=com"
roleName="cn"
roleSearch="(uniqueMember={0})"/>
</Realm>
如果我嘗試訪問Tomcat經理,我可以與LDAP身份驗證憑據,所以連接基本工作原理。
這是我的配置:
@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/test").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().permitAll()
.and()
.logout().permitAll()
.and()
.csrf().disable();
}
}
我知道我可以配置直接在應用程序(authenticationManagerBuilder.ldapAuthentication()...
)LDAP連接,但是這不是我想要的。
如何告訴Spring Boot使用來自Tomcat的LDAP身份驗證進行應用程序?
UPDATE
它看起來像我不得不啓用Pre-Authentication。這可以通過.and().jee().mappableRoles("ROLE_ADMIN")
完成。這似乎工作,但我仍然無法驗證:No pre-authenticated principal found in request
。
我需要爲Tomcats配置添加一些東西嗎?