This commit is contained in:
Ziad Sawalha 2011-07-08 22:49:09 -05:00
parent f0c75bd499
commit b9f856ab97
3 changed files with 63 additions and 60 deletions

View File

@ -162,7 +162,7 @@ class AuthProtocol(object):
if claims:
# TODO(Ziad): add additional details we may need,
# like tenant and group info
self._decorate_request('X_AUTHORIZATION', "Proxy %s" %
self._decorate_request('X_AUTHORIZATION', "Proxy %s" %
claims['user'])
self._decorate_request('X_TENANT', claims['tenant'])
self._decorate_request('X_USER', claims['user'])
@ -203,16 +203,17 @@ class AuthProtocol(object):
return data
def _get_claims(self, env):
"""Get claims from request"""
claims = env.get('HTTP_X_AUTH_TOKEN', env.get('HTTP_X_STORAGE_TOKEN'))
return claims
def _reject_request(self):
# Redirect client to auth server
"""Redirect client to auth server"""
return HTTPUseProxy(location=self.auth_location)(self.env,
self.start_response)
def _reject_claims(self):
# Client sent bad claims
"""Client sent bad claims"""
return HTTPUnauthorized()(self.env,
self.start_response)
@ -282,8 +283,8 @@ class AuthProtocol(object):
roles.append(role_ref["roleId"])
verified_claims = {'user': token_info['auth']['user']['username'],
'tenant': token_info['auth']['user']['tenantId'], 'roles':roles}
'tenant': token_info['auth']['user']['tenantId'],
'roles': roles}
# TODO(Ziad): removed groups for now
# ,'group': '%s/%s' % (first_group['id'],
@ -291,11 +292,12 @@ class AuthProtocol(object):
return verified_claims
def _decorate_request(self, index, value):
"""Add headers to request"""
self.proxy_headers[index] = value
self.env["HTTP_%s" % index] = value
def _forward_request(self):
#Token/Auth processed & claims added to headers
"""Token/Auth processed & claims added to headers"""
self._decorate_request('AUTHORIZATION',
"Basic %s" % self.service_pass)
#now decide how to pass on the call

View File

@ -64,7 +64,8 @@ class KeystoneAuthShim(wsgi.Middleware):
# set user admin-ness to keystone admin-ness
if user_ref.is_admin() != (req.headers.get('X_ROLE', None) == 'Admin'):
self.auth.modify_user(user_ref, admin=req.headers.get('X_ROLE') == 'Admin')
self.auth.modify_user(user_ref,
admin=req.headers.get('X_ROLE') == 'Admin')
# create a project for tenant
project_id = req.headers['X_TENANT']

View File

@ -132,81 +132,81 @@ class BaseUserAPI(object):
class BaseTokenAPI(object):
def create(self, values):
pass
def get(self, id):
pass
def delete(self, id):
pass
def get_for_user(self, user_id):
pass
def get_for_user_by_tenant(self, user_id, tenant_id):
pass
def get_all(self):
pass
class BaseTenantGroupAPI(object):
def create(self, values):
pass
def is_empty(self, id):
pass
def get(self, id, tenant):
pass
def get_page(self, tenantId, marker, limit):
pass
def get_page_markers(self, tenantId, marker, limit):
pass
def update(self, id, tenant_id, values):
pass
def delete(self, id, tenant_id):
pass
class BaseTenantAPI(object):
def create(self, values):
pass
def get(self, id):
pass
def get_all(self):
pass
def tenants_for_user_get_page(self, user, marker, limit):
pass
def tenants_for_user_get_page_markers(self, user, marker, limit):
pass
def get_page(self, marker, limit):
pass
def get_page_markers(self, marker, limit):
pass
def is_empty(self, id):
pass
def update(self, id, values):
pass
def delete(self, id):
pass
def get_all_endpoints(self, tenant_id):
pass
def get_role_assignments(self, tenant_id):
pass
@ -214,95 +214,95 @@ class BaseTenantAPI(object):
class BaseRoleAPI(object):
def create(self, values):
pass
def get(self, id):
pass
def get_all(self):
pass
def get_page(self, marker, limit):
pass
def ref_get_page(self, marker, limit, user_id):
pass
def ref_get_all_global_roles(self, user_id):
pass
def ref_get_all_tenant_roles(self, user_id, tenant_id):
pass
def ref_get(self, id):
pass
def ref_delete(self, id):
pass
def get_page_markers(self, marker, limit):
pass
def ref_get_page_markers(self, user_id, marker, limit):
pass
class BaseGroupAPI(object):
def get(self, id):
pass
def get_users(self, id):
pass
def get_all(self):
pass
def get_page(self, marker, limit):
pass
def get_page_markers(self, marker, limit):
pass
def delete(self, id):
pass
def get_by_user_get_page(self, user_id, marker, limit):
pass
def get_by_user_get_page_markers(self, user_id, marker, limit):
pass
class BaseEndpointTemplateAPI(object):
def create(self, values):
pass
def get(self, id):
pass
def get_all(self):
pass
def get_page(self, marker, limit):
pass
def get_page_markers(self, marker, limit):
pass
def endpoint_get_by_tenant_get_page(self, tenant_id, marker, limit):
pass
def endpoint_get_by_tenant_get_page_markers(self, tenant_id, marker,
limit):
pass
def endpoint_add(self, values):
pass
def endpoint_get(self, id):
pass
def endpoint_get_by_tenant(self, tenant_id):
pass
def endpoint_delete(self, id):
pass