Пример #1
0
def raw_jwt_from_proto(proto_raw_jwt: testing_api_pb2.JwtToken) -> jwt.RawJwt:
  """Converts a proto JwtToken into a jwt.RawJwt."""
  type_header = None
  if proto_raw_jwt.HasField('type_header'):
    type_header = proto_raw_jwt.type_header.value
  issuer = None
  if proto_raw_jwt.HasField('issuer'):
    issuer = proto_raw_jwt.issuer.value
  subject = None
  if proto_raw_jwt.HasField('subject'):
    subject = proto_raw_jwt.subject.value
  audiences = list(proto_raw_jwt.audiences)
  if not audiences:
    audiences = None
  jwt_id = None
  if proto_raw_jwt.HasField('jwt_id'):
    jwt_id = proto_raw_jwt.jwt_id.value
  custom_claims = {}
  for name, claim in proto_raw_jwt.custom_claims.items():
    if claim.HasField('null_value'):
      custom_claims[name] = None
    elif claim.HasField('number_value'):
      custom_claims[name] = claim.number_value
    elif claim.HasField('string_value'):
      custom_claims[name] = claim.string_value
    elif claim.HasField('bool_value'):
      custom_claims[name] = claim.bool_value
    elif claim.HasField('json_object_value'):
      custom_claims[name] = json.loads(claim.json_object_value)
    elif claim.HasField('json_array_value'):
      custom_claims[name] = json.loads(claim.json_array_value)
    else:
      raise ValueError('claim %s has unknown type' % name)
  return jwt.new_raw_jwt(
      type_header=type_header,
      issuer=issuer,
      subject=subject,
      audiences=audiences,
      jwt_id=jwt_id,
      expiration=_from_timestamp_proto(proto_raw_jwt.expiration),
      not_before=_from_timestamp_proto(proto_raw_jwt.not_before),
      issued_at=_from_timestamp_proto(proto_raw_jwt.issued_at),
      custom_claims=custom_claims)
Пример #2
0
def proto_to_verified_jwt(token: testing_api_pb2.JwtToken) -> jwt.VerifiedJwt:
    """Converts a proto JwtToken into a jwt.VerifiedJwt."""
    type_header = None
    if token.HasField('type_header'):
        type_header = token.type_header.value
    issuer = None
    if token.HasField('issuer'):
        issuer = token.issuer.value
    subject = None
    if token.HasField('subject'):
        subject = token.subject.value
    jwt_id = None
    if token.HasField('jwt_id'):
        jwt_id = token.jwt_id.value
    audiences = None
    if token.audiences:
        audiences = list(token.audiences)
    if token.HasField('expiration'):
        expiration = to_datetime(token.expiration.seconds,
                                 token.expiration.nanos)
        without_expiration = False
    else:
        expiration = None
        without_expiration = True
    not_before = None
    if token.HasField('not_before'):
        not_before = to_datetime(token.not_before.seconds,
                                 token.not_before.nanos)
    issued_at = None
    if token.HasField('issued_at'):
        issued_at = to_datetime(token.issued_at.seconds, token.issued_at.nanos)
    custom_claims = {}
    for name in token.custom_claims:
        value = token.custom_claims[name]
        if value.HasField('null_value'):
            custom_claims[name] = None
        if value.HasField('number_value'):
            custom_claims[name] = value.number_value
        if value.HasField('string_value'):
            custom_claims[name] = value.string_value
        if value.HasField('bool_value'):
            custom_claims[name] = value.bool_value
        if value.HasField('json_object_value'):
            custom_claims[name] = json.loads(value.json_object_value)
        if value.HasField('json_array_value'):
            custom_claims[name] = json.loads(value.json_array_value)
    raw_jwt = jwt.new_raw_jwt(type_header=type_header,
                              issuer=issuer,
                              subject=subject,
                              audiences=audiences,
                              jwt_id=jwt_id,
                              expiration=expiration,
                              without_expiration=without_expiration,
                              not_before=not_before,
                              issued_at=issued_at,
                              custom_claims=custom_claims)
    return jwt.VerifiedJwt._create(raw_jwt)  # pylint: disable=protected-access
Пример #3
0
def proto_to_verified_jwt(token: testing_api_pb2.JwtToken) -> jwt.VerifiedJwt:
    """Converts a proto JwtToken into a jwt.VerifiedJwt."""
    issuer = None
    if token.HasField('issuer'):
        issuer = token.issuer.value
    subject = None
    if token.HasField('subject'):
        subject = token.subject.value
    jwt_id = None
    if token.HasField('jwt_id'):
        jwt_id = token.jwt_id.value
    audiences = None
    if token.audiences:
        audiences = list(token.audiences)
    expiration = None
    if token.HasField('expiration'):
        expiration = datetime.datetime.fromtimestamp(token.expiration.seconds,
                                                     datetime.timezone.utc)
    not_before = None
    if token.HasField('not_before'):
        not_before = datetime.datetime.fromtimestamp(token.not_before.seconds,
                                                     datetime.timezone.utc)
    issued_at = None
    if token.HasField('issued_at'):
        issued_at = datetime.datetime.fromtimestamp(token.issued_at.seconds,
                                                    datetime.timezone.utc)
    custom_claims = {}
    for name in token.custom_claims:
        value = token.custom_claims[name]
        if value.HasField('null_value'):
            custom_claims[name] = None
        if value.HasField('number_value'):
            custom_claims[name] = value.number_value
        if value.HasField('string_value'):
            custom_claims[name] = value.string_value
        if value.HasField('bool_value'):
            custom_claims[name] = value.bool_value
        if value.HasField('json_object_value'):
            custom_claims[name] = json.loads(value.json_object_value)
        if value.HasField('json_array_value'):
            custom_claims[name] = json.loads(value.json_array_value)
    raw_jwt = jwt.new_raw_jwt(issuer, subject, audiences, jwt_id, expiration,
                              not_before, issued_at, custom_claims)
    return jwt.VerifiedJwt._create(raw_jwt)  # pylint: disable=protected-access