2017-01-09 1 views
0

Ich bin neu bei FIWARE. Auf meinem Ubuntu 16.04 habe ich Fiware's KeyRock eingerichtet, eine Kombination aus OpenStack Keystone Identity Management und Horizon Dashboard. Ich habe this Guide verwendet, um alles einzurichten."Nicht autorisiert: Die Anfrage, die Sie vorgenommen haben, erfordert Authentifizierung. (HTTP 401)" auf Fiware Horizon

Nach der Installation von Keystone (was eine RESTful API ist), habe ich curl verwendet, um HTTP-Anfragen zu senden und alles funktioniert gut, d. H. Ich kann these Befehle auf dem Keystone-Server mit curl ausführen.

Allerdings, wenn ich im openstack_dashboard Verzeichnis mit sich Django Horizon auf dem gleichen Server mit dem Referenzprojekt auszuführen:

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

Horizon Server startet ohne Fehler, aber wenn ich Zugriff auf sie über den Browser, ich erhalte die folgende Fehlermeldung:

A server error occured. Please contact the administrator 

Auf der Keystone-Server-Konsole, erhalte ich folgende Fehlermeldung:

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 

Auf der Horizon-Server-Konsole, erhalte ich folgende Fehlermeldung:

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 

Ich bin eine GET-Anfrage über den Browser zu senden, aber der Keystone-Server eine POST-Anforderung empfängt, wie in seinem Konsolenausgabe. Ich verstehe nicht, warum das so ist.

Antwort

3

Es sieht so aus, als ob der Horizon Server die Anmeldeinformationen nicht überprüfen kann.

Im Falle von Fiware würden Sie diesen Fehler auf dem Horizon Server erhalten, wenn die Datei local_settings.py (im Verzeichnis /horizon/openstack_dashboard/local/) nicht richtig konfiguriert ist. In dieser Datei befindet sich ein Wörterbuch mit dem Namen IDM_USER_CREDENTIALS, in dem Sie das Kennwort für das Administratorprofil festlegen müssen, das beim Füllen der Keystone-Datenbank erstellt wurde. Es ist auch in der link angegeben, die Sie bereitgestellt haben. Versuchen Sie, das Passwort zu ändern und zu überprüfen, ob es funktioniert.

+0

Vielen Dank. Dies hat das Problem gelöst. P.S. Ich denke, sie sollten dies in der Installationsanleitung deutlich gemacht haben, um den Ärger zu retten. – Umair47

Verwandte Themen