def validate_auth_config(auth): if not keychain.has_auth_attr(auth, 'auth_type'): return False if not keychain.has_auth_attr(auth, 'auth_params'): return False return True
def validate_auth_config(auth): if not keychain.has_auth_attr(auth, 'auth_params'): return False if not keychain.has_auth_attr(auth.auth_params, 'token'): return False if not keychain.has_auth_attr(auth.auth_params, 'local_endpoint'): return False return True
def validate_auth_config(auth): if not keychain.has_auth_attr(auth, 'auth_type'): return False if not keychain.has_auth_attr(auth, 'auth_params'): return False if not keychain.has_auth_attr(auth.auth_params, 'transfer_token'): return False if not keychain.has_auth_attr(auth.auth_params, 'local_endpoint'): return False return True
def validate_auth_config(auth): if not keychain.has_auth_attr(auth, 'auth_uri'): return False if not keychain.has_auth_attr(auth, 'auth_type'): return False if not keychain.has_auth_attr(auth, 'auth_method'): return False if not keychain.has_auth_attr(auth, 'auth_params'): return False if not keychain.has_auth_attr(auth.auth_params, 'username'): return False if not keychain.has_auth_attr(auth.auth_params, 'password'): return False if not keychain.has_auth_attr(auth.auth_params, 'username_field'): return False if not keychain.has_auth_attr(auth.auth_params, 'password_field'): return False return True
def validate_auth_config(auth): if not keychain.has_auth_attr(auth, 'auth_uri'): return False if not keychain.has_auth_attr(auth, 'auth_type'): return False if not keychain.has_auth_attr(auth, 'auth_method'): return False if not keychain.has_auth_attr(auth, 'auth_params'): return False if not keychain.has_auth_attr(auth.auth_params, 'username'): return False if not keychain.has_auth_attr(auth.auth_params, 'password'): return False if not keychain.has_auth_attr(auth.auth_params, 'username_field'): return False if not keychain.has_auth_attr(auth.auth_params, 'password_field'): return False return True
def get_session(url, auth_config): session = None response = None for auth in list((entry for entry in auth_config if hasattr(entry, 'uri') and (entry.uri.lower() in url.lower()))): try: if not validate_auth_config(auth): continue if auth.uri in SESSIONS: session = SESSIONS[auth.uri] break else: session = get_new_session() if auth.auth_type == 'cookie': if auth.auth_params and hasattr(auth.auth_params, 'cookies'): cookies = auth.auth_params.cookies for cookie in cookies: name, value = cookie.split('=', 1) session.cookies.set(name, value, domain=urlsplit(auth.uri).hostname, path='/') SESSIONS[auth.uri] = session break # if we get here the assumption is that the auth_type is either http-basic or http-form auth_uri = auth.uri if keychain.has_auth_attr(auth, 'auth_uri'): auth_uri = auth.auth_uri if not (keychain.has_auth_attr(auth.auth_params, 'username') and keychain.has_auth_attr(auth.auth_params, 'password')): logging.warning( "Missing required parameters [username, password] for auth_type [%s] for keychain entry [%s]" % (auth.auth_type, auth.uri)) continue if auth.auth_type == 'http-basic': session.auth = (auth.auth_params.username, auth.auth_params.password) auth_method = "post" if keychain.has_auth_attr(auth.auth_params, 'auth_method'): auth_method = auth.auth_params.auth_method.lower() if auth_method == 'post': response = session.post(auth_uri, auth=session.auth) elif auth_method == 'get': response = session.get(auth_uri, auth=session.auth) else: logging.warning("Unsupported auth_method [%s] for auth_type [%s] for keychain entry [%s]" % (auth_method, auth.auth_type, auth.uri)) elif auth.auth_type == 'http-form': response = session.post(auth_uri, {auth.auth_params.username_field or "username": auth.auth_params.username, auth.auth_params.password_field or "password": auth.auth_params.password}) if response.status_code > 203: logger.warning( 'Authentication failed with Status Code: %s %s\n' % (response.status_code, response.text)) else: logger.info("Session established: %s", auth.uri) SESSIONS[auth.uri] = session break except Exception as e: logger.warning("Unhandled exception during HTTP(S) authentication: %s" % get_typed_exception(e)) if not session: url_parts = urlsplit(url) base_url = str("%s://%s" % (url_parts.scheme, url_parts.netloc)) session = SESSIONS.get(base_url, None) if not session: session = get_new_session() SESSIONS[base_url] = session return session