Пример #1
0
    def test_encode_jwt(self):
        self.test_generate_jwk()

        self.payload = {'hello': 'world'}

        self.encoded = JWTUtil.encode(self.payload, self.prv_jwk)
        print(f'encoded: {self.encoded}')

        extracted = JWTUtil.unverified_decode(self.encoded)
        print(f'payload: {extracted}')
        self.assertDictEqual(self.payload, extracted)
Пример #2
0
    def issue_access_token(self, user_type, user_id, domain_id, **kwargs):
        private_jwk = self._get_private_jwk(kwargs)
        timeout = kwargs.get('timeout', self.CONST_TOKEN_TIMEOUT)

        payload = {
            'cat': 'ACCESS_TOKEN',
            'user_type': user_type,
            'did': domain_id,
            'aud': user_id,
            'iat': int(time.time()),
            'exp': int(time.time() + timeout)
        }

        encoded = JWTUtil.encode(payload, private_jwk)
        return encoded
Пример #3
0
    def issue_refresh_token(self, user_type, user_id, domain_id, **kwargs):
        refresh_private_jwk = self._get_refresh_private_jwk(kwargs)
        ttl = kwargs.get('ttl', self.CONST_REFRESH_TTL)
        timeout = kwargs.get('timeout', self.CONST_REFRESH_TIMEOUT)
        refresh_key = self._generate_refresh_key()

        payload = {
            'cat': 'REFRESH_TOKEN',
            'user_type': user_type,
            'did': domain_id,
            'aud': user_id,
            'iat': int(time.time()),
            'exp': int(time.time() + timeout),
            "key": refresh_key,
            'ttl': ttl
        }

        encoded = JWTUtil.encode(payload, refresh_private_jwk)

        if self.CONST_REFRESH_ONCE:
            self._set_refresh_token_cache(refresh_key)

        return encoded
Пример #4
0
    def generate_api_key(self) -> Tuple[str, Any]:
        key = utils.random_string()

        payload = {
            'cat': 'API_KEY',
            'user_type': 'USER',
            'did': self.domain_id,
            'aud': self.aud_id,
            'iat': int(time.time()),
            'key': key,
            'ver': '2020-03-04'
        }

        encoded = JWTUtil.encode(payload, self.prv_jwk)

        _LOGGER.debug(f'[KeyGenerator] Generated payload. ( '
                      f'cat: {payload.get("cat")}, '
                      f'ver: {payload.get("ver")}, '
                      f'key(masked): {payload.get("key")[0:8]}*****, '
                      f'aud: {payload.get("aud")}, '
                      f'did: {payload.get("did")} )')

        return key, encoded
Пример #5
0
    def generate_api_key(self,
                         api_key_id: str,
                         user_type: str = 'USER') -> Tuple[str, Any]:
        payload = {
            'cat': 'API_KEY',
            'user_type': user_type,
            'did': self.domain_id,
            'aud': self.audience,
            'iat': int(time.time()),
            'api_key_id': api_key_id,
            'ver': '2020-12-07'
        }

        encoded = JWTUtil.encode(payload, self.prv_jwk)

        _LOGGER.debug(f'[KeyGenerator] Generated payload. ( '
                      f'cat: {payload.get("cat")}, '
                      f'user_type: {payload.get("user_type")}, '
                      f'did: {payload.get("did")}, '
                      f'aud: {payload.get("aud")}, '
                      f'api_key_id: {payload.get("api_key_id")}, '
                      f'version: {payload.get("version")} )')

        return encoded