Spring Boot Dersleri‘ne devam ediyoruz.
Merkezi yetkilendirme işlemlerinde kullanılan LDAP Yetkilendirmesini Spring Boot projemize ekleme işlemlerinin nasıl olduğuna bakacağız.
Ldap yetkilendirmesinin nasıl yapıldığı ile alakalı bir uygulama yapacağız.
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Code language: HTML, XML (xml)
Yukarıdaki bağımlılıklarda Ldap konfigürasyonu için spring-ldap-core bağımlılığı yeterli olacaktır.
Ldap konfigürasyonumuz için application.properties dosyamıza gerekli olan Ldap bilgilerimizi girelim.
ldap.enabled = true
ldap.urls= ldap_url
ldap.base.dn= dc=example,dc=com
ldap.username= ldap_kullanıcı cn=tip_bilgisi ,dc= ,dc=
ldap.password= ldap_sifre
ldap.user.dn.pattern = uid={0}
Code language: JavaScript (javascript)
Önceki yazılarımızda Spring Security ile yetkilendirme işlemlerini kullanarak ldap bağlantısını kullanarak giriş ve rol yetkisini verelim.
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Value("${ldap.urls}")
private String ldapUrl;
@Value("${ldap.base.dn}")
private String ldapBaseDn;
@Value("${ldap.username}")
private String ldapUsername;
@Value("${ldap.password}")
private String ldapPassword;
@Value("${ldap.user.dn.pattern}")
private String ldapPattern;
@Value("${ldap.enabled}")
private String ldapEnabled;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login**").permitAll()
.antMatchers("/profile/**").fullyAuthenticated()
.antMatchers("/").permitAll()
.and()
.formLogin()
.loginPage("/login")
.failureUrl("/login?error")
.permitAll()
.and()
.logout()
.invalidateHttpSession(true)
.deleteCookies("JSESSIONID")
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
if(Boolean.parseBoolean(ldapEnabled)) {
auth
.ldapAuthentication()
.contextSource()
.url(ldapUrl + ldapBaseDn)
.managerDn(ldapUsername)
.managerPassword(ldapPassword)
.and()
.userDnPatterns(ldapPattern);
} else {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
}
Code language: PHP (php)
Ldap bilgileri ile yetkilendirme işlemlerini yaptık şimdi ise Controller’imizi ve ardından kullanıcı giriş sayfasını yapalım.
@Controller
@RequestMapping("/")
public class HomeController {
@RequestMapping(method = RequestMethod.GET)
public ModelAndView home() {
return new ModelAndView("index");
}
@RequestMapping(value = "dashboard", method = RequestMethod.GET)
public ModelAndView Interfaces() {
return new ModelAndView("dashboard");
}
}
Code language: PHP (php)
Login controllerimizi oluşturalım.
@Controller
@RequestMapping("/")
public class LoginController {
@RequestMapping(value = "login", method = RequestMethod.GET)
public ModelAndView Login() {
return new ModelAndView("login");
}
}
Code language: PHP (php)
Ve son olarak login ve dashborad sayfalarımızı yapalım.
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>LDAP Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div class="container">
<form name="loginForm" th:action="@{/login}" action="/login" method="POST">
<label for="username">Email</label>
<input type="text" name="username" id="username" />
<label for="password">Password</label>
<input type="password" name="password" id="password" placeholder="Password"/>
<button type="submit">Giriş yap</button>
</form>
</div>
</body>
</html>
Code language: HTML, XML (xml)
Ve kullanıcı giriş yaptığıda başarılı olduğuna dair bir mesaj gelecek. Ldap ile doğrulama
Leave a Reply