관리-도구
편집 파일: jwt_issuer.cpython-311.pyc
� �����b"��[ ��������������������������d�dl�Z�d�dlZd�dlZd�dlmZmZ�d�dlmZ�d�dlmZ�d�dl m Z mZ�d�dlm Z �e j��������ej��������e j��������ej��������iZ�G�d��d������������ZdS�) �����N)�datetime� timedelta)�Path)�InvalidTokenException)�UIRole�UserType)�atomic_rewritec��������������������n����e�Zd�Z�ed������������Z�ed������������Z�ej��������dd������������Z�ej��������dd������������Z �e �ee�������������������������Z�e �ee �������������������������Z ed����������������Zed efd ���������������Zededed efd ���������������Zededed edz��fd���������������Zedefd���������������ZdS�)� JWTIssuerz/var/imunify360/.api-secret.keyz$/var/imunify360/.api-secret-prev.key�#I360_JWT_TOKEN_EXPIRATION_TTL_HOURS�����$I360_JWT_SECRET_EXPIRATION_TTL_HOURS����)�hoursc������������������������ �t����������j��������|�j��������������������}|j��������}n#�t����������$�r�d}Y�nw�xY�wt����������j���������������������������������������������������������|z ��|�j��������j ��������k����S�)Ng��������) �os�stat�JWT_SECRET_FILE�st_mtime�FileNotFoundErrorr����now� timestamp�SECRET_EXPIRATION_TTL�seconds)�clsr���r���s��� �S/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/api/jwt_issuer.py�is_secret_expiredzJWTIssuer.is_secret_expired���sy������ %��7�3�.�/�/�D���}�H�H���!�� �� �� ��H�H�H� ���� � �L�N�N�$�$�&�&��1��'�/� 0� s����#��2�2�returnc����������������������|�������������������������������������r�d���������������������d��t����������d������������D���������������������������}|�j�������������������������������������������s|�j��������������������������������������������t ����������t����������|�j��������������������|t����������|�j��������������������dd��������������|S�|�j��������� ����������������������������������S�)N��c��������������3����l���K����|�]/}t����������j��������t����������j��������t����������j��������z���������������V����0d�S�)N)�random�choice�string�ascii_uppercase�digits)�.0�_s��� r���� <genexpr>z(JWTIssuer._get_secret.<locals>.<genexpr>/���sJ�����������!��!���� �f�4�v�}�D�E�E�!��!��!��!��!��!������@������i���)�backup�uid�permissions) r����join�ranger����exists�touchr ����str�JWT_SECRET_FILE_PREV� read_text)r���� new_secrets��� r����_get_secretzJWTIssuer._get_secret,���s�������� � �"�"�� 3�����!��!��r���!��!��!�����J���&�-�-�/�/�� ,��#�)�)�+�+�+���C�'�(�(���3�3�4�4��!� �� �� �� �����&�0�0�2�2�2r*���� user_name� user_typec�����������������������ddl�}|���������������������||t����������j����������������������|�j��������z��������������������������������������d�|������������������������������������������������S�)z� Generates a token with several encoded fields: user name, user type, expiration timestamp r���N)r:����username�exp)�jwt�encoder���r����TOKEN_EXPIRATION_TTLr���r8���)r���r9���r:���r>���s��� r���� get_tokenzJWTIssuer.get_token@���s_������� � � � ��z�z�&�%� �����)A�A�L�L�N�N� �� � � �O�O��� �� �� r*����token�secretNc������������������`�����dd�l�} �|���������������������||dg�������������S�#�|j��������$�r�Y�d�S�w�xY�w)Nr����HS256)� algorithms)r>����decode� PyJWTError)r���rB���rC���r>���s��� r����_parse_tokenzJWTIssuer._parse_tokenT���sN������� � � � ��:�:�e�V�� �:�B�B�B���~�� �� �� ��D�D� ���s������ -�-c�����������������������|�j���������|�j��������fD�]_}|�����������������������������������s�|����������������������||�����������������������������������������������}|r|d���������t ����������|d������������������d�c�S��`t ����������d�������������)Nr<���r:���)r9���r:���� INVALID_TOKEN)r���r5���r2���rI���r6����UIRoleToUserTyper���)r���rB���� secret_pth�decodeds��� r����parse_tokenzJWTIssuer.parse_token`���s��������.��0H�I�� 9�� 9�J��$�$�&�&�� ���&�&�u�j�.B�.B�.D�.D�E�E�G��� �!(��!4�!1�'�+�2F�!G���������� ��(��8�8�8r*���)�__name__� __module__�__qualname__r���r���r5���r����getenv�JWT_TOKEN_EXPIRATION_TTL_HOURS�JWT_SECRET_EXPIRATION_TTL_HOURSr����intr@���r����classmethodr���r4���r8���r���rA����dictrI���rO�����r*���r���r���r������s���������������d�<�=�=�O��4� F�G�G��%.�R�Y�-�q�&��&�"��'0�b�i�.��'��'�#��%�9�3�3�/M�+N�+N�O�O�O��%�I��c�1�2�2��������� �� ���[� ���3�C��3��3��3���[�3�&�� �#�� �&�� �S�� �� �� ���[� �&�� ��� �c�� �d�T�k�� �� �� ���[� ���9���9��9��9���[�9��9��9r*���r���)r"���r���r$���r���r����pathlibr����"defence360agent.subsys.panels.baser���� defence360agent.contracts.configr���r����defence360agent.utilsr ����ADMIN�ROOT�CLIENT�NON_ROOTrL���r���rY���r*���r����<module>rb������s������� � � � �� � � � �� � � � ��(��(��(��(��(��(��(��(��������������D��D��D��D��D��D��=��=��=��=��=��=��=��=��0��0��0��0��0��0���L�(�-� �M�8�$����[9��[9��[9��[9��[9��[9��[9��[9��[9��[9r*���