1

私はDjangoを初めて使用するので、これは私の知識に大きな穴があることを示しているだけかもしれません. 2つは非常に密接にリンクされるため、django-openstack-authを使用してwebappをOpenstackに認証しようとしています。ただし、カスタム認証バックエンドを機能させる方法がわかりません。http://django-openstack-auth.readthedocs.org/en/latest/index.htmlの指示に従ってみましたが、少しまばらで、実際に機能する例はありません。

以下は私が変更した構成ファイルですが、適切に機能していません。いくつかの広範なグーグル検索の結果、私がこのモジュールを使用した最初の人であると判断しました(?) (実際、または私は最も愚かです)

settings.py:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'openstack_auth',
)

#AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend','openstack_auth.backend.KeystoneBackend',)
AUTHENTICATION_BACKENDS = ('openstack_auth.backend.KeystoneBackend',)
OPENSTACK_KEYSTONE_URL = "http://192.168.XX.XX:35357/v2.0"

urls.py:

from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('openstack_auth.urls')),
)

私は必死になり、ビューで手動で認証しようとしましたが、これでも認証エラーが発生します...

from django.http import HttpResponse
from django.contrib.auth import authenticate, login

def home(request):
    user = authenticate(username='user', password='password')
    if user is None:
        login(request, user)
    else:
        return HttpResponse("Hello")

どんなポインタでも大歓迎です...

どうもありがとう

アレックス

4

2 に答える 2

0

これについても、私は非常に長い間戸惑いました。django-openstack-auth 内のバグが原因だと思います。

(私は django-openstack-auth 1.1.7 を使用していました) /Lib/site-packages/openstack_auth/backend.py の authenticate(...) 関数を調べると、auth_url が設定から読み取られていないことがわかります。これにより、keystone_client.Client(...) を実行しようとすると、数行下で例外が発生します。

django-openstack-auth-1.1.9 に更新すると、これが関数に追加されました。

if auth_url is None:
    auth_url = settings.OPENSTACK_KEYSTONE_URL
于 2015-01-30T08:18:10.677 に答える