尝试在Django中使用django-auth-ldap进行LDAP认证
本文的目的是什么?
我將整理出在 Ubuntu20.04 上搭建 Django 並成為 LDAP 客戶端的步驟。以下是所期望的目標。
对于LDAP服务器,可以使用以下的文章中创建的内容。
因此,LDAP 配置如下所示。
请看以下文章
- Django のインストール
- Django への LDAP 設定
操作步骤
安装过程中的错误
在安装django-auth-ldap时出现错误,但是有关解决方案可以在以下URL中找到。
详细的步骤
按照上面的URL就可以了。
- django-auth-ldap のインストール
$ pip install django-auth-ldap
- settings.py に以下を追記する。
import ldap
from django_auth_ldap.config import LDAPSearch
(中略)
AUTHENTICATION_BACKENDS = [
"django_auth_ldap.backend.LDAPBackend",
"django.contrib.auth.backends.ModelBackend",
]
AUTH_LDAP_SERVER_URI = "ldap://192.168.56.102"
AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_SEARCH = LDAPSearch(
"ou=people,dc=hoge,dc=example,dc=com", ldap.SCOPE_SUBTREE, "(uid=%(user)s)"
)
将 AUTHENTICATION_BACKENDS 配置成这样的原因是考虑到如果只有 “django_auth_ldap.backend.LDAPBackend” 的话,所有用户只能通过 LDAP 登录。但是我们希望管理员用户能够不使用 LDAP 来登录,因此采用了这种写法。
- user001 で、Django にログイン試行する。
- このタイミングではおそらくログイン失敗するが、Django 上に user001 のアカウントは自動作成されているので、LDAP クライアントとしては正しく設定されている様子。
- user001 の詳細から、Staff status にチェックを入れてあげると、user001 でのログインが可能となる。
最终
-
- ユーザのログインについては、Staff status にチェックをしているのがデフォルトで認証できると嬉しいけど今回はそこまでは確認せず。。Django の設定でできるような気はするけど、ドキュメントをもっと読まねば。
-
- LDAP 認証しているユーザについて、パスワード変更しようとした場合にどういう挙動になるのかも確認できてない。本格運用するとなったら、もっと細かいところまで実装見る必要ありそう。
- Active Directory とか使った場合にどうなるのかも今後みてみたい。