Spring Boot Dersleri – LDAP Yetkilendirmesi Kullanmak

Spring Boot
Spring Dersleri

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>

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}

Ö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");
 }
 }
 
}

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");
	}
}

Login controllerimizi oluşturalım.

@Controller
@RequestMapping("/")
public class LoginController {

	@RequestMapping(value = "login", method = RequestMethod.GET)
	public ModelAndView Login() {
		return new ModelAndView("login");
	}
}

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>

Ve kullanıcı giriş yaptığıda başarılı olduğuna dair bir mesaj gelecek. Ldap ile doğrulama

Önceki Ders: Security Basic Authentication Kullanım Örneği
Spring Boot Dersleri
Sonraki Ders: 

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Burak KUTBAY 2010 - 2019
%d blogcu bunu beğendi: