def append_session_headers(self, account, headers):
     if account:
         userURL = str(account.get_value(CE+'user'))
         displayName = account.get_value(FOAF+'nick', userURL, "")
         if not displayName or displayName == "":
             displayName = account.get_value(FOAF+'givenName', userURL, "")
             if not displayName or displayName == "":
                 displayName = account.get_value(CE+'account_id')
         fkaURL = utils.get_claims(self.environ)['user']
         claims = { # normal RDF_JSON turns out to be too voluminous. Make something small
             'exp': time.time() + 3600,
             'user': userURL,
             'acc': account.graph_url, #TODO remove this
             'disp': displayName,
             'fka': fkaURL }
     else:
         claims = utils.create_anonymous_user_claims(self.environ)
     sessionId = cryptography.encode_jwt(claims) 
     cookie = Cookie.SimpleCookie()
     cookie['SSSESSIONID'] = sessionId # SSSESSIONID  is 'Site Server Session ID'
     cookie['SSSESSIONID']['path'] = '/'
     cookie['user'] = claims['user']
     cookie['user']['path'] = '/'
     cookie_headers = map(lambda morsel: ('Set-Cookie', morsel.OutputString()), cookie.values())
     headers.extend(cookie_headers)
     return headers
示例#2
0
def get_or_create_claims(environ):
    jwt = get_jwt(environ)
    if jwt:
        claims = cryptography.decode_jwt(jwt) 
        if not claims: # expired claims?
            claims = cryptography.decode_jwt(jwt, verify_expiration=False)
            if claims: # we have a verified set of claims, but they have expired
                del claims['acc']
                del claims['exp']
                environ['GUEST_AUTHORIZATION'] = cryptography.encode_jwt(claims)
    else:
        claims = None
    if not claims:
        claims = create_anonymous_user_claims(environ)
        environ['GUEST_AUTHORIZATION'] = cryptography.encode_jwt(claims)
    return claims
示例#3
0
def set_resource_host_header(request_url, headers):
    if SYSTEM_HOST is not None:
        parts = list(urlparse.urlparse(request_url))
        if not parts[0]:
            parts[0] = 'http'
        if parts[1]:
            headers['CE-Resource-Host'] = parts[1]
        parts[1] = SYSTEM_HOST
        return urlparse.urlunparse(tuple(parts))
    else:
        return request_url

def intra_system_get(request_url, headers=None):
    if not headers: headers = dict()
    actual_url = set_resource_host_header(str(request_url), headers)
    logger.debug('intra_system_get request_url: %s actual_url: %s headers: %s', request_url, actual_url, headers)
    return requests.get(actual_url, headers=headers)

CONTENT_RDF_JSON_HEADER = {
    'Content-type' : 'application/rdf+json+ce',
    'Cookie' : 'SSSESSIONID=%s' % cryptography.encode_jwt({'user': ADMIN_USER}),
    'ce-post-reason' : 'ce-create'
    }

def intra_system_post(request_url, data, headers=None):
    if not headers: headers = CONTENT_RDF_JSON_HEADER.copy()
    actual_url = set_resource_host_header(request_url, headers)
    logger.debug('intra_system_post request_url: %s actual_url: %s headers: %s data: %s', request_url, actual_url, headers, data)
    return requests.post(actual_url, headers=headers, data=json.dumps(data, cls=RDF_JSON_Encoder), verify=False)
    return None
示例#4
0
import requests
from base_constants import ADMIN_USER
from cryptography import encode_jwt

encoded_jwt = encode_jwt({"user": ADMIN_USER})
DELETE_HEADER = {"Cookie": "SSSESSIONID=%s" % encoded_jwt}
DATASERVER_HOSTNAME = "localhost:3007"

items_container_url = "http://%s/items" % DATASERVER_HOSTNAME


def run():
    requests.delete(items_container_url, headers=DELETE_HEADER)


if __name__ == "__main__":
    run()
import base64, requests
import json, os
from cryptography import encode_jwt

USER_URL = 'http://ibm.com/user/Frank'
SIGNATURE_PUBLIC_KEY = 'our little secret'
encoded_jwt = encode_jwt({'user':USER_URL})
AUTH_HEADER = { 'Cookie' : 'SSSESSIONID=%s' % encoded_jwt }

DATASERVER_HOSTNAME = 'localhost:3001'
if 'SERVICE_HOSTNAME' in os.environ:
    DATASERVER_HOSTNAME = os.environ['SERVICE_HOSTNAME']
TS_HOSTNAME = 'testsite.%s' % DATASERVER_HOSTNAME

ts_ac_app_url = 'http://%s/ac' % TS_HOSTNAME
ts_mt_app_url = 'http://%s/mt' % TS_HOSTNAME
ts_cat_app_url = 'http://%s/cat' % TS_HOSTNAME

def run():
    requests.delete(ts_ac_app_url, headers=AUTH_HEADER)
    requests.delete(ts_mt_app_url, headers=AUTH_HEADER)
    requests.delete(ts_cat_app_url, headers=AUTH_HEADER)

if __name__ == '__main__':
    run()
示例#6
0
 def __init__(self, cat_categories_url, cat_products_url, id_prefix, user=ADMIN_USER):
     self.cat_categories_url = cat_categories_url
     self.cat_products_url = cat_products_url
     self.id_prefix = id_prefix
     self.categories = {}
     self.products = {}
     self.headers = { 'Content-type' : 'application/rdf+json+ce' , 'Cookie' : 'SSSESSIONID=%s' % encode_jwt({'user':user}) , 'ce-post-reason' : 'ce-create' }