Exemplo n.º 1
0
class IDMTokenProcessor(object):
    def __init__(self):
        if IDM_SUPPORT_ENABLED:
            self.openstack_manager = OpenstackTokenManager(getattr(settings, 'FIWARE_CLOUD_SERVER', FIWARE_LAB_CLOUD_SERVER))

    def process_request(self, request):
        headers = ['fiware-oauth-token', 'x-fi-ware-oauth-token', 'fiware-openstack-token']
        filtered = [header for header in headers if header in request['headers']]

        if len(filtered) == 0:
            return

        for header in filtered:
            del request['headers'][header]

        if not IDM_SUPPORT_ENABLED:
            raise ValidationError(_('IdM support not enabled'))
        elif request['workspace'] is None:
            raise ValidationError(_('IdM tokens can only be inyected on Ajax requests coming from authorized widgets'))

        tenantid = request['headers'].get("fiware-openstack-tenant-id")

        source = 'user'
        if 'fiware-oauth-source' in request['headers']:
            source = request['headers']['fiware-oauth-source']
            del request['headers']['fiware-oauth-source']
        elif 'x-fi-ware-oauth-source' in request['headers']:
            source = request['headers']['x-fi-ware-oauth-source']
            del request['headers']['x-fi-ware-oauth-source']

        if source == 'user':
            token = get_access_token(request['user'], _('Current user has not an active FIWARE profile'))
            if 'fiware-openstack-token' in filtered:
                openstacktoken = self.openstack_manager.get_token(request['user'], tenantid)
        elif source == 'workspaceowner':
            token = get_access_token(request['workspace'].creator, _('Workspace owner has not an active FIWARE profile'))
            if 'fiware-openstack-token' in filtered:
                openstacktoken = self.openstack_manager.get_token(request['workspace'].creator, tenantid)
        else:
            raise ValidationError(_('Invalid FIWARE OAuth token source'))

        if 'fiware-oauth-token' in filtered or 'x-fi-ware-oauth-token' in filtered:
            replace_get_parameter(request, ["fiware-oauth-get-parameter", "x-fi-ware-oauth-get-parameter"], token)
            replace_header_name(request, ["fiware-oauth-header-name", "x-fi-ware-oauth-header-name"], token)
            replace_body_pattern(request, ["fiware-oauth-body-pattern", "x-fi-ware-oauth-token-body-pattern"], token)

        if 'fiware-openstack-token' in filtered:
            replace_get_parameter(request, ["fiware-openstack-get-parameter"], openstacktoken)
            replace_header_name(request, ["fiware-openstack-header-name"], openstacktoken)
            replace_body_pattern(request, ["fiware-openstack-body-pattern"], openstacktoken)
Exemplo n.º 2
0
 def __init__(self):
     if IDM_SUPPORT_ENABLED:
         self.openstack_manager = OpenstackTokenManager(
             getattr(settings, 'FIWARE_CLOUD_SERVER',
                     FIWARE_LAB_CLOUD_SERVER))
Exemplo n.º 3
0
 def __init__(self):
     if IDM_SUPPORT_ENABLED:
         self.openstack_manager = OpenstackTokenManager(getattr(settings, 'FIWARE_CLOUD_SERVER', FIWARE_LAB_CLOUD_SERVER))