Django Auth LDAP を使用してユーザーを認証する方法は 2 つあります。
- 検索/バインドおよび
- ダイレクトバインド。
最初の方法では、LDAP サーバーに匿名または固定アカウントで接続し、認証ユーザーの識別名を検索します。次に、ユーザーのパスワードを使用して再度バインドを試みることができます。
2 番目の方法は、ユーザー名からユーザーの DN を取得し、ユーザーとして直接バインドを試みることです。
アプリケーションにアクセスしようとしているユーザーのユーザー ID (sAMAccountName) とパスワードを使用して、直接バインドできるようにしたいと考えています。これを達成する方法があれば教えてください。現時点では、以下で説明する問題により、この作業を行うことができないようです。
私の場合、LDAP のユーザーの DN は次の形式です。
**'CN=Steven Jones,OU=Users,OU=Central,OU=US,DC=client,DC=corp'**
これは基本的に「CN=FirstName LastName,OU=Users,OU=Central,OU=US,DC=client,DC=corp」に変換されます。
これは、ユーザーのsAMAccountNameがsjonesであり、これがユーザー名 (%user) に対応するパラメーターであるため、Direct Bind を使用できないためです。適切なAUTH_LDAP_USER_DN_TEMPLATEを構成してユーザーの DN を取得する方法がわかりません。使用しています。
上記の問題により、今のところ Search/Bind を使用していますが、これにはAUTH_LDAP_BIND_DNおよびAUTH_LDAP_BIND_PASSWORDで指定する固定のユーザー資格情報が必要です。
これが私の現在のsettings.py構成です
AUTH_LDAP_SERVER_URI = "ldap://10.5.120.161:389"
AUTH_LDAP_BIND_DN='CN=Steven Jones,OU=Users,OU=Central,OU=US,DC=client,DC=corp'
AUTH_LDAP_BIND_PASSWORD='fga.1234'
#AUTH_LDAP_USER_DN_TEMPLATE = 'CN=%(user)s,OU=Appl Groups,OU=Central,OU=US,DC=client,DC=corp'
AUTH_LDAP_USER_SEARCH = LDAPSearchUnion(
LDAPSearch("OU=Users, OU=Central,OU=US,DC=client,DC=corp",ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"),
LDAPSearch("OU=Users,OU=Regional,OU=Locales,OU=US,DC=client,DC=corp",ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"),
)
AUTH_LDAP_USER_ATTR_MAP = {"first_name": "givenName", "last_name": "sn","email":"mail"}
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("CN=GG_BusinessApp_US,OU=Appl Groups,OU=Central,OU=US,DC=client,DC=corp",ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)")
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()
AUTH_LDAP_REQUIRE_GROUP = 'CN=GG_BusinessApp_US,OU=Appl Groups,OU=Central,OU=US,DC=client,DC=corp'
ここにいる素晴らしい人々からのガイダンスを楽しみにしています。