'Turn a signed request with an access key into a keystone token.'

def authenticate(self, request, auth_payload):

    response_data = {}
    oauth_headers = oauth.get_oauth_headers(request.headers)
    access_token_id = oauth_headers.get('oauth_token')
    if (not access_token_id):
        raise exception.ValidationError(attribute='oauth_token', target='request')
    acc_token = self.oauth_api.get_access_token(access_token_id)
    expires_at = acc_token['expires_at']
    if expires_at:
        now = timeutils.utcnow()
        expires = timeutils.normalize_time(timeutils.parse_isotime(expires_at))
        if (now > expires):
            raise exception.Unauthorized(_('Access    token    is    expired'))
    url = controller.V3Controller.base_url(request.context_dict, request.path_info)
    access_verifier = oauth.ResourceEndpoint(request_validator=validator.OAuthValidator(), token_generator=oauth.token_generator)
    (result, request) = access_verifier.validate_protected_resource_request(url, http_method='POST', body=request.params, headers=request.headers, realms=None)
    if (not result):
        msg = _('Could    not    validate    the    access    token')
        raise exception.Unauthorized(msg)
    response_data['user_id'] = acc_token['authorizing_user_id']
    response_data['access_token_id'] = access_token_id
    response_data['project_id'] = acc_token['project_id']
    return base.AuthHandlerResponse(status=True, response_body=None, response_data=response_data)
