1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

django-auth-ldap を用いて Django に LDAP 認証してみる

Posted at

本記事の目的

Ubuntu20.04 上に Django を構築し、LDAP クライアントとして活用できるようにするまでの手順をまとめておく。目指すイメージは以下の通り。

figure-1.png

LDAP サーバについては、以下記事で作成したものを流用。

したがって、LDAP は以下のような構成になってます。

figure-2.png

参考記事

  • Django のインストール

  • Django への LDAP 設定

手順

インストール時のエラーについて

django-auth-ldap のインストール時にエラー発生したが、そちらの解決については以下 URL に記載している。

手順詳細

基本は上の URL に従えば OK。

  • 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 にログイン試行する。

figure-3.png

  • このタイミングではおそらくログイン失敗するが、Django 上に user001 のアカウントは自動作成されているので、LDAP クライアントとしては正しく設定されている様子。

figure-4.png

  • user001 の詳細から、Staff status にチェックを入れてあげると、user001 でのログインが可能となる。

最後に

  • ユーザのログインについては、Staff status にチェックをしているのがデフォルトで認証できると嬉しいけど今回はそこまでは確認せず。。Django の設定でできるような気はするけど、ドキュメントをもっと読まねば。
  • LDAP 認証しているユーザについて、パスワード変更しようとした場合にどういう挙動になるのかも確認できてない。本格運用するとなったら、もっと細かいところまで実装見る必要ありそう。
  • Active Directory とか使った場合にどうなるのかも今後みてみたい。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?