2016-07-27 21 views
1

ユーザー名とパスワードを取得し、そのユーザーを認証するためにLDAPサーバーを使用しようとする単純なフォームを使用しています。ダッシュボードの実際のポータルはPHPで書かれていますが、私はdjango(とpyldap)を使って書き直す必要があります。私のsettings.pyファイルには、以下の設定があります(私が働いている会社が使用しているので、URIを変更しました)。私のviews.pyでDjangoとLDAPを使用して認証できません

# LDAP Settings 
# Set backends 
AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend', 
) 

# LDAP Server 
AUTH_LDAP_SERVER_URI = 'ldaps://eddie.xy.zzzzz.com:3268' 
AUTH_LDAP_START_TLS = True 

# Search settings 
AUTH_LDAP_BIND_DN = "" 
AUTH_LDAP_BIND_PASSWORD = "" 
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=xy,dc=zzzzz,dc=com", ldap.SCOPE_SUBTREE, "(uid=%(user)s)") 

、私は次のコード(物事をテストするために)

from django.shortcuts import render 
from django.contrib.auth import authenticate 
from django_auth_ldap.backend import LDAPBackend # Greyed out 

def login(request): 
    if request.method == 'POST': 
     # Get info from POST request 
     usr = request.POST['username'] 
     pas = request.POST['password'] 

     # Authenticate the user using provided data 
     user = authenticate(username=usr, password=pas) 
     print(str(user)) 

     if user is not None: 
      return render(request, 'dashboard/index.html', {}) 
     else: 
      print("The username and password were incorrect.") 
      return render(request, 'dashboard/error.html', {}) 

    elif request.method == 'GET': 
     return render(request, 'dashboard/login.html', {}) 

login.htmlとは、メソッド= "ポストで、その中のフォームを持つ単純なHTMLコードが含まれているを持っています"action ="/login/"。 Index.htmlには単純な「成功」メッセージが含まれ、error.htmlには単純な「間違った」メッセージが含まれています。メッセージ。私は私が作った形で私の(働く)証明書を使っていますが、私は成功メッセージを得ることができません。

at = LDAPBackend() 
user = authenticate(username=usr, password=pas) 

の代わりに、上記のコードで使用される認証方式:私も試した何

は、これでした。残念ながら、私は同じ動作をしています。私の欠点はどこですか?私のミスはどこですか?

答えて

0

Finnaly、私はそれを行うことができます。この変数を設定する必要がありました:

AUTH_LDAP_USER_DN_TEMPLATE = "%(user)s" 

これは完全に機能しています。私はこれが他の人を助けることを願っています。とにかくありがとう!

良い一日を!

関連する問題