티스토리 뷰

1. 개요

KerberosLdapContextSource는 Kerberos 인증을 기반으로 LDAP(Lightweight Directory Access Protocol) 서버와의 통신을 지원하는 Spring Security의 컨텍스트 소스입니다.
이는 LDAP 서버에서 사용자 인증을 수행할 때 Kerberos 티켓을 이용하는 방식으로, 보안성이 뛰어나며 기업 환경에서 많이 사용됩니다.

Spring Security에서 Kerberos를 이용한 LDAP 연동이 필요할 경우,
KerberosLdapContextSource를 사용하여 LDAP 서버에 안전하게 접근하고, Kerberos를 활용한 인증을 수행할 수 있습니다.

 

 

 

2. Kerberos와 LDAP의 관계

LDAP은 디렉터리 서비스 프로토콜이며, 사용자의 인증 및 디렉터리 정보를 관리하는 데 사용됩니다.
Kerberos는 중앙 집중식 인증 시스템으로, 사용자가 한 번 인증되면 여러 서비스에 접근할 수 있도록 티켓 기반 인증을 제공합니다.

LDAP 서버에서 Kerberos를 이용하면, 사용자의 비밀번호를 직접 전달하는 대신 Kerberos 티켓을 사용하여 인증을 수행할 수 있습니다.
이 방식은 보안성이 뛰어나며, Active Directory(AD) 환경에서도 널리 활용됩니다.

 

 

 

3. KerberosLdapContextSource의 주요 기능

  1. Kerberos 티켓을 활용한 인증 지원
    • 사용자의 Kerberos 티켓을 사용하여 LDAP 서버에 안전하게 인증을 수행합니다.
  2. GSSAPI 기반 인증 지원
    • GSSAPI(Generic Security Services Application Program Interface)를 통해 인증을 처리합니다.
  3. LDAP 서버와의 통신 보안 강화
    • Kerberos 인증을 통해 LDAP 서버와의 통신을 보호하며, 비밀번호를 직접 전달하지 않아 보안성이 높습니다.

 

 

 

4. KerberosLdapContextSource 설정 방법

4.1. Maven 또는 Gradle 의존성 추가

Spring Security Kerberos를 사용하려면 관련 의존성을 추가해야 합니다.

Maven 설정

<dependency>
    <groupId>org.springframework.security.kerberos</groupId>
    <artifactId>spring-security-kerberos-core</artifactId>
    <version>1.0.2.RELEASE</version>
</dependency>

Gradle 설정

implementation 'org.springframework.security.kerberos:spring-security-kerberos-core:1.0.2.RELEASE'

 

4.2. KerberosLdapContextSource 설정

Spring Boot에서 KerberosLdapContextSource를 설정하는 방법을 설명하겠습니다.

Java 기반 설정

import org.springframework.security.kerberos.client.KerberosLdapContextSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class LdapConfig {

    @Bean
    public KerberosLdapContextSource kerberosLdapContextSource() {
        KerberosLdapContextSource contextSource = new KerberosLdapContextSource("ldap://ldap.example.com:389");
        contextSource.setLoginConfig("classpath:krb5.conf"); // Kerberos 설정 파일
        contextSource.setUserDn("CN=admin,DC=example,DC=com");
        contextSource.setPassword("admin-password"); // 필요할 경우 입력
        return contextSource;
    }
}

설정 설명

  • "ldap://ldap.example.com:389": LDAP 서버 주소를 지정합니다.
  • setLoginConfig("classpath:krb5.conf"): Kerberos 설정 파일을 지정합니다.
  • setUserDn("CN=admin,DC=example,DC=com"): LDAP에서 사용할 기본 계정을 설정합니다.
  • setPassword("admin-password"): 관리자의 비밀번호를 입력합니다.

 

4.3. krb5.conf 설정

Kerberos 인증을 사용하려면 krb5.conf 파일을 올바르게 구성해야 합니다.

[libdefaults]
  default_realm = EXAMPLE.COM
  kdc_timesync = 1
  forwardable = true
  proxiable = true

[realms]
  EXAMPLE.COM = {
    kdc = kerberos.example.com
    admin_server = kerberos.example.com
  }

[domain_realm]
  .example.com = EXAMPLE.COM
  example.com = EXAMPLE.COM

설정 설명

  • default_realm: 기본 Kerberos 도메인을 설정합니다.
  • kdc: Kerberos Key Distribution Center(KDC) 서버를 지정합니다.
  • admin_server: 관리 서버 주소를 설정합니다.

 

 

 

5. LDAP-Kerberos 인증 흐름

  1. 사용자가 Kerberos 티켓을 요청
    • 사용자는 KDC(Key Distribution Center)에 인증 요청을 보냅니다.
  2. KDC가 티켓을 발급(TGT, Ticket Granting Ticket)
    • KDC는 사용자의 신원을 확인한 후, TGT를 발급합니다.
  3. 사용자가 LDAP 서버에 접근 요청
    • 사용자는 TGT를 사용하여 LDAP 서버에 접근을 시도합니다.
  4. LDAP 서버가 Kerberos 티켓을 검증
    • LDAP 서버는 Kerberos 티켓을 확인한 후, 접근을 허용합니다.

 

 

 

6. 주요 설정 옵션

메서드 설명

setUrl(String url) LDAP 서버 URL을 설정
setUserDn(String userDn) 기본 관리자 계정을 설정
setPassword(String password) 관리자 비밀번호 설정
setLoginConfig(String path) Kerberos 설정 파일 경로 지정
setReferral(String referral) LDAP 참조 설정 (기본값: "follow")

 

 

 

7. 고려해야 할 사항

  1. Kerberos 설정 파일(krb5.conf)이 올바르게 구성되어야 합니다.
    • 잘못된 설정이 있으면 LDAP 서버와의 인증이 실패할 수 있습니다.
  2. LDAP 서버가 Kerberos 인증을 지원해야 합니다.
    • Kerberos를 활용한 LDAP 인증을 사용하려면 LDAP 서버가 SASL 및 GSSAPI 인증을 지원해야 합니다.
  3. 네트워크 문제를 고려해야 합니다.
    • Kerberos는 정확한 시간 동기화가 필요하므로, 클라이언트와 서버 간 시간이 동기화되어 있어야 합니다.
  4. Active Directory 환경에서 사용 시 도메인 설정이 필요합니다.
    • Windows 환경의 AD(Active Directory)와 연동할 경우, 도메인 컨트롤러 및 DNS 설정이 정확해야 합니다.

 

 

 

8. 결론

  • KerberosLdapContextSource는 LDAP 서버와의 통신을 Kerberos 인증을 통해 보안성을 강화하는 Spring Security 컴포넌트입니다.
  • 기존 LDAP 인증 방식과 비교하여 비밀번호를 직접 전달하지 않고 Kerberos 티켓을 사용하므로 보안성이 뛰어납니다.
  • krb5.conf 설정이 올바르게 구성되어 있어야 하며, LDAP 서버가 Kerberos 인증을 지원해야 정상적으로 동작할 수 있습니다.
  • Active Directory 환경에서도 적용 가능하며, 대규모 시스템에서 중앙 집중식 인증 관리 및 보안 강화에 유용합니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함