def _get_sso_origin_host(self, context): """Validate and return originating dashboard URL. Make sure the parameter is specified in the request's URL as well its value belongs to a list of trusted dashboards. :param context: request's context :raises keystone.exception.ValidationError: ``origin`` query parameter was not specified. The URL is deemed invalid. :raises keystone.exception.Unauthorized: URL specified in origin query parameter does not exist in list of websso trusted dashboards. :returns: URL with the originating dashboard """ if 'origin' in context['query_string']: origin = context['query_string']['origin'] host = urllib.parse.unquote_plus(origin) else: msg = _('Request must have an origin query parameter') LOG.error(msg) raise exception.ValidationError(msg) # change trusted_dashboard hostnames to lowercase before comparison trusted_dashboards = [k_utils.lower_case_hostname(trusted) for trusted in CONF.federation.trusted_dashboard] if host not in trusted_dashboards: msg = _('%(host)s is not a trusted dashboard host') msg = msg % {'host': host} LOG.error(msg) raise exception.Unauthorized(msg) return host
def _get_sso_origin_host(): """Validate and return originating dashboard URL. Make sure the parameter is specified in the request's URL as well its value belongs to a list of trusted dashboards. :raises keystone.exception.ValidationError: ``origin`` query parameter was not specified. The URL is deemed invalid. :raises keystone.exception.Unauthorized: URL specified in origin query parameter does not exist in list of websso trusted dashboards. :returns: URL with the originating dashboard """ origin = flask.request.args.get('origin') if not origin: msg = 'Request must have an origin query parameter' tr_msg = _('Request must have an origin query parameter') LOG.error(msg) raise exception.ValidationError(tr_msg) host = urllib.parse.unquote_plus(origin) # change trusted_dashboard hostnames to lowercase before comparison trusted_dashboards = [k_utils.lower_case_hostname(trusted) for trusted in CONF.federation.trusted_dashboard] if host not in trusted_dashboards: msg = '%(host)s is not a trusted dashboard host' % {'host': host} tr_msg = _('%(host)s is not a trusted dashboard host') % { 'host': host} LOG.error(msg) raise exception.Unauthorized(tr_msg) return host
def _get_sso_origin_host(self, context): """Validate and return originating dashboard URL. Make sure the parameter is specified in the request's URL as well its value belongs to a list of trusted dashboards. :param context: request's context :raises keystone.exception.ValidationError: ``origin`` query parameter was not specified. The URL is deemed invalid. :raises keystone.exception.Unauthorized: URL specified in origin query parameter does not exist in list of websso trusted dashboards. :returns: URL with the originating dashboard """ if 'origin' in context['query_string']: origin = context['query_string']['origin'] host = urllib.parse.unquote_plus(origin) else: msg = _('Request must have an origin query parameter') LOG.error(msg) raise exception.ValidationError(msg) # change trusted_dashboard hostnames to lowercase before comparison trusted_dashboards = [k_utils.lower_case_hostname(trusted) for trusted in CONF.federation.trusted_dashboard] if host not in trusted_dashboards: msg = _('%(host)s is not a trusted dashboard host') msg = msg % {'host': host} LOG.error(msg) raise exception.Unauthorized(msg) return host
def _get_sso_origin_host(): """Validate and return originating dashboard URL. Make sure the parameter is specified in the request's URL as well its value belongs to a list of trusted dashboards. :raises keystone.exception.ValidationError: ``origin`` query parameter was not specified. The URL is deemed invalid. :raises keystone.exception.Unauthorized: URL specified in origin query parameter does not exist in list of websso trusted dashboards. :returns: URL with the originating dashboard """ origin = flask.request.args.get('origin') if not origin: msg = 'Request must have an origin query parameter' tr_msg = _('Request must have an origin query parameter') LOG.error(msg) raise exception.ValidationError(tr_msg) host = urllib.parse.unquote_plus(origin) # change trusted_dashboard hostnames to lowercase before comparison trusted_dashboards = [k_utils.lower_case_hostname(trusted) for trusted in CONF.federation.trusted_dashboard] if host not in trusted_dashboards: msg = '%(host)s is not a trusted dashboard host' % {'host': host} tr_msg = _('%(host)s is not a trusted dashboard host') % { 'host': host} LOG.error(msg) raise exception.Unauthorized(tr_msg) return host