"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "keystone/token/token_formatters.py" between
keystone-15.0.0.tar.gz and keystone-15.0.1.tar.gz

About: OpenStack Keystone (Core Service: Identity) provides an authentication and authorization service for other OpenStack services. Provides a catalog of endpoints for all OpenStack services.
The "Stein" series (maintained release).

token_formatters.py  (keystone-15.0.0):token_formatters.py  (keystone-15.0.1)
skipping to change at line 313 skipping to change at line 313
def attempt_convert_uuid_hex_to_bytes(cls, value): def attempt_convert_uuid_hex_to_bytes(cls, value):
"""Attempt to convert value to bytes or return value. """Attempt to convert value to bytes or return value.
:param value: value to attempt to convert to bytes :param value: value to attempt to convert to bytes
:returns: tuple containing boolean indicating whether user_id was :returns: tuple containing boolean indicating whether user_id was
stored as bytes and uuid value as bytes or the original value stored as bytes and uuid value as bytes or the original value
""" """
try: try:
return (True, cls.convert_uuid_hex_to_bytes(value)) return (True, cls.convert_uuid_hex_to_bytes(value))
except ValueError: except (ValueError, TypeError):
# this might not be a UUID, depending on the situation (i.e. # ValueError: this might not be a UUID, depending on the
# federation) # situation (i.e. federation)
# TypeError: the provided value may be binary encoded
# in which case just return the value (i.e. Python 3)
return (False, value) return (False, value)
@classmethod @classmethod
def base64_encode(cls, s): def base64_encode(cls, s):
"""Encode a URL-safe string. """Encode a URL-safe string.
:type s: six.text_type :type s: six.text_type
:rtype: six.text_type :rtype: six.text_type
""" """
skipping to change at line 344 skipping to change at line 346
:type s: six.text_type :type s: six.text_type
:rtype: six.binary_type :rtype: six.binary_type
""" """
# urlsafe_b64decode() requires str, unicode isn't accepted. # urlsafe_b64decode() requires str, unicode isn't accepted.
s = str(s) s = str(s)
# restore the padding (==) at the end of the string # restore the padding (==) at the end of the string
return base64.urlsafe_b64decode(s + '==') return base64.urlsafe_b64decode(s + '==')
@classmethod
def _convert_or_decode(cls, is_stored_as_bytes, value):
"""Convert a value to text type, translating uuid -> hex if required.
:param is_stored_as_bytes: whether value is already bytes
:type is_stored_as_bytes: six.boolean
:param value: value to attempt to convert to bytes
:type value: six.text_type or six.binary_type
:rtype: six.text_type
"""
if is_stored_as_bytes:
return cls.convert_uuid_bytes_to_hex(value)
elif isinstance(value, six.binary_type):
return value.decode('utf-8')
return value
class UnscopedPayload(BasePayload): class UnscopedPayload(BasePayload):
version = 0 version = 0
@classmethod @classmethod
def assemble(cls, user_id, methods, system, project_id, domain_id, def assemble(cls, user_id, methods, system, project_id, domain_id,
expires_at, audit_ids, trust_id, federated_group_ids, expires_at, audit_ids, trust_id, federated_group_ids,
identity_provider_id, protocol_id, access_token_id, identity_provider_id, protocol_id, access_token_id,
app_cred_id): app_cred_id):
b_user_id = cls.attempt_convert_uuid_hex_to_bytes(user_id) b_user_id = cls.attempt_convert_uuid_hex_to_bytes(user_id)
methods = auth_plugins.convert_method_list_to_integer(methods) methods = auth_plugins.convert_method_list_to_integer(methods)
expires_at_int = cls._convert_time_string_to_float(expires_at) expires_at_int = cls._convert_time_string_to_float(expires_at)
b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes, b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes,
audit_ids)) audit_ids))
return (b_user_id, methods, expires_at_int, b_audit_ids) return (b_user_id, methods, expires_at_int, b_audit_ids)
@classmethod @classmethod
def disassemble(cls, payload): def disassemble(cls, payload):
(is_stored_as_bytes, user_id) = payload[0] (is_stored_as_bytes, user_id) = payload[0]
if is_stored_as_bytes: user_id = cls._convert_or_decode(is_stored_as_bytes, user_id)
user_id = cls.convert_uuid_bytes_to_hex(user_id)
methods = auth_plugins.convert_integer_to_method_list(payload[1]) methods = auth_plugins.convert_integer_to_method_list(payload[1])
expires_at_str = cls._convert_float_to_time_string(payload[2]) expires_at_str = cls._convert_float_to_time_string(payload[2])
audit_ids = list(map(cls.base64_encode, payload[3])) audit_ids = list(map(cls.base64_encode, payload[3]))
system = None system = None
project_id = None project_id = None
domain_id = None domain_id = None
trust_id = None trust_id = None
federated_group_ids = None federated_group_ids = None
identity_provider_id = None identity_provider_id = None
protocol_id = None protocol_id = None
skipping to change at line 407 skipping to change at line 424
else: else:
raise raise
expires_at_int = cls._convert_time_string_to_float(expires_at) expires_at_int = cls._convert_time_string_to_float(expires_at)
b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes, b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes,
audit_ids)) audit_ids))
return (b_user_id, methods, b_domain_id, expires_at_int, b_audit_ids) return (b_user_id, methods, b_domain_id, expires_at_int, b_audit_ids)
@classmethod @classmethod
def disassemble(cls, payload): def disassemble(cls, payload):
(is_stored_as_bytes, user_id) = payload[0] (is_stored_as_bytes, user_id) = payload[0]
if is_stored_as_bytes: user_id = cls._convert_or_decode(is_stored_as_bytes, user_id)
user_id = cls.convert_uuid_bytes_to_hex(user_id)
methods = auth_plugins.convert_integer_to_method_list(payload[1]) methods = auth_plugins.convert_integer_to_method_list(payload[1])
try: try:
domain_id = cls.convert_uuid_bytes_to_hex(payload[2]) domain_id = cls.convert_uuid_bytes_to_hex(payload[2])
except ValueError: except ValueError:
# the default domain ID is configurable, and probably isn't a UUID # the default domain ID is configurable, and probably isn't a UUID
if six.PY3 and isinstance(payload[2], six.binary_type): if six.PY3 and isinstance(payload[2], six.binary_type):
payload[2] = payload[2].decode('utf-8') payload[2] = payload[2].decode('utf-8')
if payload[2] == CONF.identity.default_domain_id: if payload[2] == CONF.identity.default_domain_id:
domain_id = payload[2] domain_id = payload[2]
else: else:
skipping to change at line 454 skipping to change at line 470
methods = auth_plugins.convert_method_list_to_integer(methods) methods = auth_plugins.convert_method_list_to_integer(methods)
b_project_id = cls.attempt_convert_uuid_hex_to_bytes(project_id) b_project_id = cls.attempt_convert_uuid_hex_to_bytes(project_id)
expires_at_int = cls._convert_time_string_to_float(expires_at) expires_at_int = cls._convert_time_string_to_float(expires_at)
b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes, b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes,
audit_ids)) audit_ids))
return (b_user_id, methods, b_project_id, expires_at_int, b_audit_ids) return (b_user_id, methods, b_project_id, expires_at_int, b_audit_ids)
@classmethod @classmethod
def disassemble(cls, payload): def disassemble(cls, payload):
(is_stored_as_bytes, user_id) = payload[0] (is_stored_as_bytes, user_id) = payload[0]
if is_stored_as_bytes: user_id = cls._convert_or_decode(is_stored_as_bytes, user_id)
user_id = cls.convert_uuid_bytes_to_hex(user_id)
methods = auth_plugins.convert_integer_to_method_list(payload[1]) methods = auth_plugins.convert_integer_to_method_list(payload[1])
(is_stored_as_bytes, project_id) = payload[2] (is_stored_as_bytes, project_id) = payload[2]
if is_stored_as_bytes: project_id = cls._convert_or_decode(is_stored_as_bytes, project_id)
project_id = cls.convert_uuid_bytes_to_hex(project_id)
expires_at_str = cls._convert_float_to_time_string(payload[3]) expires_at_str = cls._convert_float_to_time_string(payload[3])
audit_ids = list(map(cls.base64_encode, payload[4])) audit_ids = list(map(cls.base64_encode, payload[4]))
system = None system = None
domain_id = None domain_id = None
trust_id = None trust_id = None
federated_group_ids = None federated_group_ids = None
identity_provider_id = None identity_provider_id = None
protocol_id = None protocol_id = None
access_token_id = None access_token_id = None
app_cred_id = None app_cred_id = None
skipping to change at line 497 skipping to change at line 511
expires_at_int = cls._convert_time_string_to_float(expires_at) expires_at_int = cls._convert_time_string_to_float(expires_at)
b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes, b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes,
audit_ids)) audit_ids))
return (b_user_id, methods, b_project_id, expires_at_int, b_audit_ids, return (b_user_id, methods, b_project_id, expires_at_int, b_audit_ids,
b_trust_id) b_trust_id)
@classmethod @classmethod
def disassemble(cls, payload): def disassemble(cls, payload):
(is_stored_as_bytes, user_id) = payload[0] (is_stored_as_bytes, user_id) = payload[0]
if is_stored_as_bytes: user_id = cls._convert_or_decode(is_stored_as_bytes, user_id)
user_id = cls.convert_uuid_bytes_to_hex(user_id)
methods = auth_plugins.convert_integer_to_method_list(payload[1]) methods = auth_plugins.convert_integer_to_method_list(payload[1])
(is_stored_as_bytes, project_id) = payload[2] (is_stored_as_bytes, project_id) = payload[2]
if is_stored_as_bytes: project_id = cls._convert_or_decode(is_stored_as_bytes, project_id)
project_id = cls.convert_uuid_bytes_to_hex(project_id)
expires_at_str = cls._convert_float_to_time_string(payload[3]) expires_at_str = cls._convert_float_to_time_string(payload[3])
audit_ids = list(map(cls.base64_encode, payload[4])) audit_ids = list(map(cls.base64_encode, payload[4]))
trust_id = cls.convert_uuid_bytes_to_hex(payload[5]) trust_id = cls.convert_uuid_bytes_to_hex(payload[5])
system = None system = None
domain_id = None domain_id = None
federated_group_ids = None federated_group_ids = None
identity_provider_id = None identity_provider_id = None
protocol_id = None protocol_id = None
access_token_id = None access_token_id = None
app_cred_id = None app_cred_id = None
skipping to change at line 528 skipping to change at line 540
class FederatedUnscopedPayload(BasePayload): class FederatedUnscopedPayload(BasePayload):
version = 4 version = 4
@classmethod @classmethod
def pack_group_id(cls, group_dict): def pack_group_id(cls, group_dict):
return cls.attempt_convert_uuid_hex_to_bytes(group_dict['id']) return cls.attempt_convert_uuid_hex_to_bytes(group_dict['id'])
@classmethod @classmethod
def unpack_group_id(cls, group_id_in_bytes): def unpack_group_id(cls, group_id_in_bytes):
(is_stored_as_bytes, group_id) = group_id_in_bytes (is_stored_as_bytes, group_id) = group_id_in_bytes
if is_stored_as_bytes: group_id = cls._convert_or_decode(is_stored_as_bytes, group_id)
group_id = cls.convert_uuid_bytes_to_hex(group_id)
return {'id': group_id} return {'id': group_id}
@classmethod @classmethod
def assemble(cls, user_id, methods, system, project_id, domain_id, def assemble(cls, user_id, methods, system, project_id, domain_id,
expires_at, audit_ids, trust_id, federated_group_ids, expires_at, audit_ids, trust_id, federated_group_ids,
identity_provider_id, protocol_id, access_token_id, identity_provider_id, protocol_id, access_token_id,
app_cred_id): app_cred_id):
b_user_id = cls.attempt_convert_uuid_hex_to_bytes(user_id) b_user_id = cls.attempt_convert_uuid_hex_to_bytes(user_id)
methods = auth_plugins.convert_method_list_to_integer(methods) methods = auth_plugins.convert_method_list_to_integer(methods)
b_group_ids = list(map(cls.pack_group_id, federated_group_ids)) b_group_ids = list(map(cls.pack_group_id, federated_group_ids))
skipping to change at line 551 skipping to change at line 562
expires_at_int = cls._convert_time_string_to_float(expires_at) expires_at_int = cls._convert_time_string_to_float(expires_at)
b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes, b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes,
audit_ids)) audit_ids))
return (b_user_id, methods, b_group_ids, b_idp_id, protocol_id, return (b_user_id, methods, b_group_ids, b_idp_id, protocol_id,
expires_at_int, b_audit_ids) expires_at_int, b_audit_ids)
@classmethod @classmethod
def disassemble(cls, payload): def disassemble(cls, payload):
(is_stored_as_bytes, user_id) = payload[0] (is_stored_as_bytes, user_id) = payload[0]
if is_stored_as_bytes: user_id = cls._convert_or_decode(is_stored_as_bytes, user_id)
user_id = cls.convert_uuid_bytes_to_hex(user_id)
methods = auth_plugins.convert_integer_to_method_list(payload[1]) methods = auth_plugins.convert_integer_to_method_list(payload[1])
group_ids = list(map(cls.unpack_group_id, payload[2])) group_ids = list(map(cls.unpack_group_id, payload[2]))
(is_stored_as_bytes, idp_id) = payload[3] (is_stored_as_bytes, idp_id) = payload[3]
if is_stored_as_bytes: idp_id = cls._convert_or_decode(is_stored_as_bytes, idp_id)
idp_id = cls.convert_uuid_bytes_to_hex(idp_id)
else:
idp_id = idp_id.decode('utf-8')
protocol_id = payload[4] protocol_id = payload[4]
if isinstance(protocol_id, six.binary_type): if isinstance(protocol_id, six.binary_type):
protocol_id = protocol_id.decode('utf-8') protocol_id = protocol_id.decode('utf-8')
expires_at_str = cls._convert_float_to_time_string(payload[5]) expires_at_str = cls._convert_float_to_time_string(payload[5])
audit_ids = list(map(cls.base64_encode, payload[6])) audit_ids = list(map(cls.base64_encode, payload[6]))
system = None system = None
project_id = None project_id = None
domain_id = None domain_id = None
trust_id = None trust_id = None
access_token_id = None access_token_id = None
skipping to change at line 599 skipping to change at line 606
expires_at_int = cls._convert_time_string_to_float(expires_at) expires_at_int = cls._convert_time_string_to_float(expires_at)
b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes, b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes,
audit_ids)) audit_ids))
return (b_user_id, methods, b_scope_id, b_group_ids, b_idp_id, return (b_user_id, methods, b_scope_id, b_group_ids, b_idp_id,
protocol_id, expires_at_int, b_audit_ids) protocol_id, expires_at_int, b_audit_ids)
@classmethod @classmethod
def disassemble(cls, payload): def disassemble(cls, payload):
(is_stored_as_bytes, user_id) = payload[0] (is_stored_as_bytes, user_id) = payload[0]
if is_stored_as_bytes: user_id = cls._convert_or_decode(is_stored_as_bytes, user_id)
user_id = cls.convert_uuid_bytes_to_hex(user_id)
methods = auth_plugins.convert_integer_to_method_list(payload[1]) methods = auth_plugins.convert_integer_to_method_list(payload[1])
(is_stored_as_bytes, scope_id) = payload[2] (is_stored_as_bytes, scope_id) = payload[2]
if is_stored_as_bytes: scope_id = cls._convert_or_decode(is_stored_as_bytes, scope_id)
scope_id = cls.convert_uuid_bytes_to_hex(scope_id)
else:
# NOTE(lbragstad): We assembled the token payload scope as a tuple
# (False, domain_id) for cases like (False, 'default'), since the
# default domain ID isn't converted to a byte string when it's not
# in UUID format. Despite the boolean indicator in the tuple that
# denotes if the value is stored as a byte string or not, msgpack
# apparently returns the serialized input as byte strings anyway.
# For example, this means what we though we were passing in as
# (False, 'default') during token creation actually comes out as
# (False, b'default') in token validation through msgpack, which
# clearly isn't correct according to our boolean indicator. This
# causes comparison issues due to different string types (e.g.,
# b'default' != 'default') with python 3. See bug 1813085 for
# details. We use this pattern for other strings in the payload
# like idp_id and protocol_id for the same reason.
if six.PY3 and isinstance(scope_id, six.binary_type):
scope_id = scope_id.decode('utf-8')
project_id = ( project_id = (
scope_id scope_id
if cls.version == FederatedProjectScopedPayload.version else None) if cls.version == FederatedProjectScopedPayload.version else None)
domain_id = ( domain_id = (
scope_id scope_id
if cls.version == FederatedDomainScopedPayload.version else None) if cls.version == FederatedDomainScopedPayload.version else None)
group_ids = list(map(cls.unpack_group_id, payload[3])) group_ids = list(map(cls.unpack_group_id, payload[3]))
(is_stored_as_bytes, idp_id) = payload[4] (is_stored_as_bytes, idp_id) = payload[4]
if is_stored_as_bytes: idp_id = cls._convert_or_decode(is_stored_as_bytes, idp_id)
idp_id = cls.convert_uuid_bytes_to_hex(idp_id)
else:
if six.PY3 and isinstance(idp_id, six.binary_type):
idp_id = idp_id.decode('utf-8')
protocol_id = payload[5] protocol_id = payload[5]
if six.PY3 and isinstance(protocol_id, six.binary_type): if six.PY3 and isinstance(protocol_id, six.binary_type):
protocol_id = protocol_id.decode('utf-8') protocol_id = protocol_id.decode('utf-8')
expires_at_str = cls._convert_float_to_time_string(payload[6]) expires_at_str = cls._convert_float_to_time_string(payload[6])
audit_ids = list(map(cls.base64_encode, payload[7])) audit_ids = list(map(cls.base64_encode, payload[7]))
system = None system = None
trust_id = None trust_id = None
access_token_id = None access_token_id = None
app_cred_id = None app_cred_id = None
return (user_id, methods, system, project_id, domain_id, return (user_id, methods, system, project_id, domain_id,
skipping to change at line 676 skipping to change at line 660
b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes, b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes,
audit_ids)) audit_ids))
b_access_token_id = cls.attempt_convert_uuid_hex_to_bytes( b_access_token_id = cls.attempt_convert_uuid_hex_to_bytes(
access_token_id) access_token_id)
return (b_user_id, methods, b_project_id, b_access_token_id, return (b_user_id, methods, b_project_id, b_access_token_id,
expires_at_int, b_audit_ids) expires_at_int, b_audit_ids)
@classmethod @classmethod
def disassemble(cls, payload): def disassemble(cls, payload):
(is_stored_as_bytes, user_id) = payload[0] (is_stored_as_bytes, user_id) = payload[0]
if is_stored_as_bytes: user_id = cls._convert_or_decode(is_stored_as_bytes, user_id)
user_id = cls.convert_uuid_bytes_to_hex(user_id)
methods = auth_plugins.convert_integer_to_method_list(payload[1]) methods = auth_plugins.convert_integer_to_method_list(payload[1])
(is_stored_as_bytes, project_id) = payload[2] (is_stored_as_bytes, project_id) = payload[2]
if is_stored_as_bytes: project_id = cls._convert_or_decode(is_stored_as_bytes, project_id)
project_id = cls.convert_uuid_bytes_to_hex(project_id)
(is_stored_as_bytes, access_token_id) = payload[3] (is_stored_as_bytes, access_token_id) = payload[3]
if is_stored_as_bytes: access_token_id = cls._convert_or_decode(is_stored_as_bytes,
access_token_id = cls.convert_uuid_bytes_to_hex(access_token_id) access_token_id)
expires_at_str = cls._convert_float_to_time_string(payload[4]) expires_at_str = cls._convert_float_to_time_string(payload[4])
audit_ids = list(map(cls.base64_encode, payload[5])) audit_ids = list(map(cls.base64_encode, payload[5]))
system = None system = None
domain_id = None domain_id = None
trust_id = None trust_id = None
federated_group_ids = None federated_group_ids = None
identity_provider_id = None identity_provider_id = None
protocol_id = None protocol_id = None
app_cred_id = None app_cred_id = None
skipping to change at line 718 skipping to change at line 700
b_user_id = cls.attempt_convert_uuid_hex_to_bytes(user_id) b_user_id = cls.attempt_convert_uuid_hex_to_bytes(user_id)
methods = auth_plugins.convert_method_list_to_integer(methods) methods = auth_plugins.convert_method_list_to_integer(methods)
expires_at_int = cls._convert_time_string_to_float(expires_at) expires_at_int = cls._convert_time_string_to_float(expires_at)
b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes, b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes,
audit_ids)) audit_ids))
return (b_user_id, methods, system, expires_at_int, b_audit_ids) return (b_user_id, methods, system, expires_at_int, b_audit_ids)
@classmethod @classmethod
def disassemble(cls, payload): def disassemble(cls, payload):
(is_stored_as_bytes, user_id) = payload[0] (is_stored_as_bytes, user_id) = payload[0]
if is_stored_as_bytes: user_id = cls._convert_or_decode(is_stored_as_bytes, user_id)
user_id = cls.convert_uuid_bytes_to_hex(user_id)
methods = auth_plugins.convert_integer_to_method_list(payload[1]) methods = auth_plugins.convert_integer_to_method_list(payload[1])
system = payload[2] system = payload[2]
expires_at_str = cls._convert_float_to_time_string(payload[3]) expires_at_str = cls._convert_float_to_time_string(payload[3])
audit_ids = list(map(cls.base64_encode, payload[4])) audit_ids = list(map(cls.base64_encode, payload[4]))
project_id = None project_id = None
domain_id = None domain_id = None
trust_id = None trust_id = None
federated_group_ids = None federated_group_ids = None
identity_provider_id = None identity_provider_id = None
protocol_id = None protocol_id = None
skipping to change at line 758 skipping to change at line 739
expires_at_int = cls._convert_time_string_to_float(expires_at) expires_at_int = cls._convert_time_string_to_float(expires_at)
b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes, b_audit_ids = list(map(cls.random_urlsafe_str_to_bytes,
audit_ids)) audit_ids))
b_app_cred_id = cls.attempt_convert_uuid_hex_to_bytes(app_cred_id) b_app_cred_id = cls.attempt_convert_uuid_hex_to_bytes(app_cred_id)
return (b_user_id, methods, b_project_id, expires_at_int, b_audit_ids, return (b_user_id, methods, b_project_id, expires_at_int, b_audit_ids,
b_app_cred_id) b_app_cred_id)
@classmethod @classmethod
def disassemble(cls, payload): def disassemble(cls, payload):
(is_stored_as_bytes, user_id) = payload[0] (is_stored_as_bytes, user_id) = payload[0]
if is_stored_as_bytes: user_id = cls._convert_or_decode(is_stored_as_bytes, user_id)
user_id = cls.convert_uuid_bytes_to_hex(user_id)
methods = auth_plugins.convert_integer_to_method_list(payload[1]) methods = auth_plugins.convert_integer_to_method_list(payload[1])
(is_stored_as_bytes, project_id) = payload[2] (is_stored_as_bytes, project_id) = payload[2]
if is_stored_as_bytes: project_id = cls._convert_or_decode(is_stored_as_bytes, project_id)
project_id = cls.convert_uuid_bytes_to_hex(project_id)
expires_at_str = cls._convert_float_to_time_string(payload[3]) expires_at_str = cls._convert_float_to_time_string(payload[3])
audit_ids = list(map(cls.base64_encode, payload[4])) audit_ids = list(map(cls.base64_encode, payload[4]))
system = None system = None
domain_id = None domain_id = None
trust_id = None trust_id = None
federated_group_ids = None federated_group_ids = None
identity_provider_id = None identity_provider_id = None
protocol_id = None protocol_id = None
access_token_id = None access_token_id = None
(is_stored_as_bytes, app_cred_id) = payload[5] (is_stored_as_bytes, app_cred_id) = payload[5]
if is_stored_as_bytes: app_cred_id = cls._convert_or_decode(is_stored_as_bytes, app_cred_id)
app_cred_id = cls.convert_uuid_bytes_to_hex(app_cred_id)
return (user_id, methods, system, project_id, domain_id, return (user_id, methods, system, project_id, domain_id,
expires_at_str, audit_ids, trust_id, federated_group_ids, expires_at_str, audit_ids, trust_id, federated_group_ids,
identity_provider_id, protocol_id, access_token_id, identity_provider_id, protocol_id, access_token_id,
app_cred_id) app_cred_id)
_PAYLOAD_CLASSES = [ _PAYLOAD_CLASSES = [
UnscopedPayload, UnscopedPayload,
DomainScopedPayload, DomainScopedPayload,
ProjectScopedPayload, ProjectScopedPayload,
TrustScopedPayload, TrustScopedPayload,
 End of changes. 21 change blocks. 
63 lines changed or deleted 41 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)