티스토리 뷰

728x90
반응형

Django 프로젝트에 LDAP 인증을 추가하는 방법을 단계별로 안내하겠습니다. 이 가이드는 Django 애플리케이션에서 LDAP를 사용하여 사용자 인증을 구현하는 데 필요한 모든 단계를 포함합니다.

 

Python LDAP Library

1. 필요한 패키지 설치

먼저, Django와 LDAP를 연동하기 위해 django-auth-ldap 패키지를 설치해야 합니다. 다음 명령어를 사용하여 설치합니다.

bash

pip install django-auth-ldap

2. Django 프로젝트 설정

Django 프로젝트가 없다면 새로 생성합니다.

bash

django-admin startproject myproject
cd myproject

3. settings.py 수정

settings.py 파일을 열고 필요한 설정을 추가합니다.

python

import ldap
from django_auth_ldap.config import LDAPSearch, GroupOfNamesType

# LDAP 서버 설정
AUTH_LDAP_SERVER_URI = "ldap://your-ldap-server.com"

# LDAP 사용자 검색 설정
AUTH_LDAP_BIND_DN = "cn=admin,dc=example,dc=com"
AUTH_LDAP_BIND_PASSWORD = "your-password"
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=example,dc=com",
                                    ldap.SCOPE_SUBTREE, "(uid=%(user)s)")

# 그룹 설정 (선택 사항)
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=groups,dc=example,dc=com",
                                     ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)")
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()

# 인증 백엔드 설정
AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
)

# LDAP 사용자 속성 매핑
AUTH_LDAP_USER_ATTR_MAP = {
    "first_name": "givenName",
    "last_name": "sn",
}

# Django 사용자 모델에 LDAP 정보 저장
AUTH_LDAP_ALWAYS_UPDATE_USER = True
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    "is_active": "cn=active-users,ou=groups,dc=example,dc=com",
    "is_staff": "cn=staff-users,ou=groups,dc=example,dc=com"
}

위의 설정에서 your-ldap-server.com, admin, your-password, 그리고 example.com 등은 실제 환경에 맞게 수정해야 합니다.

4. 데이터베이스 마이그레이션

Django의 기본 사용자 모델을 사용하므로 마이그레이션을 진행합니다.

bash

python manage.py migrate

5. 로그인 템플릿 생성

Django에서 LDAP 인증을 사용하려면 로그인 페이지를 만들어야 합니다. templates 폴더를 생성하고 그 안에 registration/login.html 파일을 생성합니다.

html

<!-- templates/registration/login.html -->
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>로그인</title>
</head>
<body>
    <h1>로그인</h1>
    <form method="post">
        {% csrf_token %}
        <div>
            <label for="id_username">사용자 이름:</label>
            <input type="text" name="username" id="id_username" required>
        </div>
        <div>
            <label for="id_password">비밀번호:</label>
            <input type="password" name="password" id="id_password" required>
        </div>
        <button type="submit">로그인</button>
    </form>
</body>
</html>

6. URL 설정

urls.py 파일을 열어 로그인 URL을 설정합니다.

python

from django.urls import path
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('login/', auth_views.LoginView.as_view(template_name='registration/login.html'), name='login'),
    # 다른 URL 패턴...
]

7. 테스트 실행

서버를 실행하고 로그인 페이지에 접속해 보세요.

bash

python manage.py runserver

브라우저에서 http://127.0.0.1:8000/login/에 접속하여 LDAP 사용자 계정으로 로그인해 보세요.

8. 결론

이제 Django 애플리케이션에서 LDAP 인증이 설정되었습니다. 사용자가 LDAP 서버를 통해 인증할 수 있게 되었으며, 필요한 경우 추가적인 사용자 속성이나 그룹 설정을 조정할 수 있습니다.

이 가이드가 도움이 되었기를 바랍니다! 추가적인 질문이 있다면 언제든지 문의해 주세요.

 

728x90
반응형