@SpringBootApplication
public class SampleLDAPApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SampleLDAPApplication.class, args);
}
@Bean
public WebMvcConfigurerAdapter adapter() {
return new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login")
.setViewName("login");
}
};
}
}
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.ldapAuthentication().userSearchBase("ou=Users").userSearchFilter("(uid={0})")
.groupSearchBase("ou=bla,ou=Roles").groupSearchFilter("(roleOccupant={0})")
.contextSource().root("dc=ops,dc=blabla,dc=com").url("ldap://192.168.1.57:389/dc=ops,dc=blabla,dc=com");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/", "/home").permitAll().anyRequest().authenticated();
http.formLogin().loginPage("/login").permitAll().and().logout().logoutSuccessUrl("/");
}
}
<div class="content">
<h2>Login with Username and Password</h2>
<form name="form" th:action="@{/login}" method="POST">
<fieldset>
<input type="text" name="username" value="" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
</fieldset>
<input type="submit" id="login" value="Login"/>
</form>
</div>
@Controller
@RequestMapping("/")
public class UserController {
@RequestMapping(value = "login")
public String login() {
return "login";
}
}
在没有Spring Boot的情况下,我的应用程序的view部分的唯一区别是,我使用JSP而不是像Spring Boot那样使用Thymeleaf:
<form action="/login" method="POST">
<fieldset>
<input type="text" name="username" value="" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
</fieldset>
<input type="submit" id="login" value="Login">
</form>
但是现在当我转到/secure
时,我的应用程序不正确地为我提供这个页面,而不是重定向到登录页面。为什么会这样?
答案是,Spring Boot很简单,Spring本身并没有那么简单。我的SecurityConfig
类未向WAR注册。因此,为了做到这一点,在与securityconfig
相同的包中,我必须创建3个类。
这:
import org.springframework.security.web.context.*;
public class MessageSecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
}
这:
@Configuration
@ComponentScan
public class RootConfiguration {
}
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { RootConfiguration.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
我正在使用SpringBoot开发具有微服务架构的Rest Backend。为了保护endpoint,我使用了JWT令牌机制。我正在使用Zuul API网关。 如果请求需要权限(来自JWT的角色),它将被转发到正确的微服务。Zuul api网关的“WebSecurityConfigrerAdapter”如下。 这样,我必须在这个类中编写每个请求授权部分。因此,我希望使用方法级安全性,即“Enabl
我的springboot版本是2.3.7。我知道spring boot starter验证不是spring boot starter web的可传递依赖项。但即使单独添加了它,我的注释也不起作用。 //下面的依赖我已经添加build.gradle编译'org.springframework.boot: spring-boot-starter-validation' //我希望在请求时出错的示例类
我遵循了这个问题答案的教程:Kafka SASL动物园管理员身份验证 并且我设置了zookeeper.set。acl在服务器中为true。属性,但我仍然可以访问2181端口上的动物园管理员,任何人都可以通过:
我在Spring Boot web应用程序中有一个非常特殊的要求:我有内部和外部用户。内部用户通过使用KeyCoap身份验证登录到web应用程序(他们可以在web应用程序中工作),但我们的外部用户通过简单的Spring Boot身份验证登录(他们可以做的只是下载web应用程序生成的一些文件) 我想做的是使用多个身份验证模型:除了/download/*之外的所有路径都要通过我们的keyCoap身份验
我正在编写一个程序,用于验证通过HTTP POST发送的用户名和密码,并根据ldap进行验证,无论验证是否成功,都将响应发送回用户。 我的Websecurity配置器实现 我的测试服务器.ldif
在浏览器中直接键入下面的url,它可以工作, 但是,当我使用相同的url,用于selenium网络驱动程序测试时,它连接到 以及请求HTTP身份验证。我是否需要更改chrome浏览器中的任何设置,或调整默认配置文件?