2017-01-09 60 views
0

我是FIWARE的新手。在我的Ubuntu 16.04上,我設置了Fiware's KeyRock,它是OpenStack Keystone Identity Management和Horizo​​n Dashboard的組合。我已經使用this指南來設置一切。「未經授權:您提出的請求需要驗證(HTTP 401)」在Fiware Horizo​​n上

安裝Keystone(這是一個RESTful API)後,我用curl發送HTTP請求,一切工作正常,即我可以使用curl在keystone服務器上運行these命令。

然而,當我使用位於openstack_dashboard目錄與參考Django項目在同一臺服務器上運行的地平線:

sudo tools/with_venv.sh python manage.py runserver 0.0.0.0:8000

地平線服務器沒有任何錯誤開始,但是當我通過瀏覽器訪問它,我得到以下錯誤:

A server error occured. Please contact the administrator 

上的梯形服務器控制檯,我得到以下錯誤:

2017-01-09 11:53:40.962 13285 ERROR keystone.notifications [-] Failed to construct notifier 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications Traceback (most recent call last): 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications File "/keystone/keystone/notifications.py", line 220, in _get_notifier 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications  transport = messaging.get_transport(CONF) 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications File "/keystone/.venv/local/lib/python2.7/site-packages/oslo/messaging/transport.py", line 185, in get_transport 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications  invoke_kwds=kwargs) 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications File "/keystone/.venv/local/lib/python2.7/site-packages/stevedore/driver.py", line 45, in __init__ 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications  verify_requirements=verify_requirements, 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications File "/keystone/.venv/local/lib/python2.7/site-packages/stevedore/named.py", line 55, in __init__ 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications  verify_requirements) 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications File "/keystone/.venv/local/lib/python2.7/site-packages/stevedore/extension.py", line 170, in _load_plugins 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications  self._on_load_failure_callback(self, ep, err) 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications File "/keystone/.venv/local/lib/python2.7/site-packages/stevedore/driver.py", line 50, in _default_on_load_failure 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications  raise err 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications ImportError: cannot import name _uuid_generate_random 
2017-01-09 11:53:40.962 13285 TRACE keystone.notifications 
2017-01-09 11:53:40.964 13285 WARNING keystone.common.wsgi [-] Authorization failed. The request you have made requires authentication. from 127.0.0.1 
2017-01-09 11:53:40.970 13285 INFO eventlet.wsgi.server [-] 127.0.0.1 - - [09/Jan/2017 11:53:40] "POST /v3/auth/tokens HTTP/1.1" 401 331 0.261293 

在地平線上的服務器控制檯,我得到以下錯誤:

DEBUG:idm_logger:Creating a new internal keystoneclient connection to http://0.0.0.0:5000/v3. 
Unauthorized: The request you have made requires authentication. (HTTP 401) 
Traceback (most recent call last): 
    File "/horizon/openstack_dashboard/fiware_api/keystone.py", line 990, in _get_element_and_cache 
resource_element = function(request, element) 
    File "/horizon/openstack_dashboard/fiware_api/keystone.py", line 1022, in <lambda> 
request, basic, lambda req, n: internal_keystoneclient(req).roles.find(name=n), pickle_props=['name']) 
    File "/horizon/openstack_dashboard/fiware_api/keystone.py", line 64, in internal_keystoneclient 
cache.set(CACHE_CLIENT, keystoneclient.session.get_token(), INTERNAL_CLIENT_CACHE_TIME) 
    File "/horizon/.venv/src/python-keystoneclient/keystoneclient/session.py", line 610, in get_token 
return (self.get_auth_headers(auth) or {}).get('X-Auth-Token') 
    File "/horizon/.venv/src/python-keystoneclient/keystoneclient/session.py", line 589, in get_auth_headers 
return auth.get_headers(self, **kwargs) 
    File "/horizon/.venv/src/python-keystoneclient/keystoneclient/auth/base.py", line 114, in get_headers 
token = self.get_token(session) 
    File "/horizon/.venv/src/python-keystoneclient/keystoneclient/auth/identity/base.py", line 104, in get_token 
return self.get_access(session).auth_token 
    File "/horizon/.venv/src/python-keystoneclient/keystoneclient/auth/identity/base.py", line 144, in get_access 
self.auth_ref = self.get_auth_ref(session) 
    File "/horizon/.venv/src/python-keystoneclient/keystoneclient/auth/identity/v3.py", line 127, in get_auth_ref 
authenticated=False, log=False, **rkwargs) 
    File "/horizon/.venv/src/python-keystoneclient/keystoneclient/session.py", line 488, in post 
return self.request(url, 'POST', **kwargs) 
    File "/horizon/.venv/src/python-keystoneclient/keystoneclient/utils.py", line 318, in inner 
return func(*args, **kwargs) 
    File "/horizon/.venv/src/python-keystoneclient/keystoneclient/session.py", line 389, in request 
raise exceptions.from_response(resp, method, url) 
Unauthorized: The request you have made requires authentication. (HTTP 401) 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run 
self.result = application(self.environ, self.start_response) 
    File "/horizon/.venv/local/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 64, in __call__ 
return self.application(environ, start_response) 
    File "/horizon/.venv/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 168, in __call__ 
self.load_middleware() 
    File "/horizon/.venv/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 46, in load_middleware 
mw_instance = mw_class() 
    File "/horizon/.venv/local/lib/python2.7/site-packages/django/middleware/locale.py", line 23, in __init__ 
for url_pattern in get_resolver(None).url_patterns: 
    File "/horizon/.venv/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 367, in url_patterns 
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "/horizon/.venv/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 361, in urlconf_module 
self._urlconf_module = import_module(self.urlconf_name) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
__import__(name) 
    File "/horizon/openstack_dashboard/urls.py", line 36, in <module> 
from openstack_dashboard.dashboards.idm_admin.user_accounts \ 
    File "/horizon/openstack_dashboard/dashboards/idm_admin/user_accounts/views.py", line 28, in <module> 
from openstack_dashboard.dashboards.idm_admin.user_accounts \ 
    File "/horizon/openstack_dashboard/dashboards/idm_admin/user_accounts/forms.py", line 195, in <module> 
class UpdateAccountForm(forms.SelfHandlingForm, UserAccountsLogicMixin): 
    File "/horizon/openstack_dashboard/dashboards/idm_admin/user_accounts/forms.py", line 202, in UpdateAccountForm 
choices=get_account_choices()) 
    File "/horizon/openstack_dashboard/dashboards/idm_admin/user_accounts/forms.py", line 172, in get_account_choices 
use_idm_account=True), 
    File "/horizon/openstack_dashboard/fiware_api/keystone.py", line 1022, in get_basic_role 
request, basic, lambda req, n: internal_keystoneclient(req).roles.find(name=n), pickle_props=['name']) 
    File "/horizon/openstack_dashboard/fiware_api/keystone.py", line 997, in _get_element_and_cache 
exceptions.handle(request) 
    File "/horizon/horizon/exceptions.py", line 291, in handle 
messages.error(request, message or fallback) 
    File "/horizon/horizon/messages.py", line 83, in error 
fail_silently=fail_silently) 
    File "/horizon/horizon/messages.py", line 41, in add_message 
if not horizon_message_already_queued(request, message): 
    File "/horizon/horizon/messages.py", line 28, in horizon_message_already_queued 
if request.is_ajax(): 
AttributeError: 'NoneType' object has no attribute 'is_ajax' 
[09/Jan/2017 12:39:35] "GET/HTTP/1.1" 500 59 

我送通過瀏覽器,但梯形服務器接收POST請求的GET請求,因爲表明了其控制檯輸出。我不明白這是爲什麼。

回答

3

看起來Horizo​​n服務器無法驗證憑據。

對於Fiware,如果文件local_settings.py(位於/horizon/openstack_dashboard/local/目錄中)未正確配置,您將在Horizo​​n服務器上發生此錯誤。在此文件中,有一個名爲IDM_USER_CREDENTIALS的字典,您需要爲填充Keystone數據庫時創建的管理員配置文件設置密碼。它也在您提供的link中給出。嘗試更改密碼並查看它是否有效。

+0

非常感謝。這解決了這個問題。 P.S.我想他們應該在安裝指南中明確說明這一點,以節省麻煩。 – Umair47

相關問題