Created attachment 14129 [details] Реальный и ожидаемый результат python3-module-pyotp-2.3.0-alt1.noarch [p10] Шаги воспроизведения: 1) Настроить аутентификацию с использованием второго фактора "МФА на основе TOTP" 2) Попытаться войти в систему: После ввода логина/пароля пользователя на странице авторизации должно открыться окно с qr-кодом или окно для ввода одноразового кода (см.вложение - 2), а открывается страница с ошибкой (см.вложение - 1): TypeError at /uds/page/mfa/ __init__() got an unexpected keyword argument 'issuer' Request Method: GET Request URL: https://192.168.0.53/uds/page/mfa/ Django Version: 3.2.20 Exception Type: TypeError Exception Value: __init__() got an unexpected keyword argument 'issuer' Exception Location: /usr/lib/python3/site-packages/pyotp/totp.py, line 21, in __init__ Python Executable: /usr/bin/python3 Python Version: 3.9.16 Python Path: ['/usr/share/openuds', '/usr/bin', '/usr/lib64/python39.zip', '/usr/lib64/python3.9', '/usr/lib64/python3.9/lib-dynload', '/usr/lib64/python3/site-packages', '/usr/lib64/python3/site-packages/gtk-2.0', '/usr/lib/python3/site-packages'] Если установлен пакет python3-module-pyotp-2.8.0-alt1.noarch [Sisyphus], ошибка также возникает. Но если при этом в файле /usr/share/openuds/uds/mfas/TOTP/mfa.py поменять местами строки "name=username," и "issuer=self.issuer.value," то поведение меняется на ожидаемое (появляется qr-код, запрашивается одноразовый пароль). Было: def getTOTP(self, userId: str, username: str) -> pyotp.TOTP: return pyotp.TOTP( self._userData(userId)[0], issuer=self.issuer.value, name=username, interval=TOTP_INTERVAL, ) Стало: def getTOTP(self, userId: str, username: str) -> pyotp.TOTP: return pyotp.TOTP( self._userData(userId)[0], name=username, issuer=self.issuer.value, interval=TOTP_INTERVAL, )
Ошибка исправлена в задании #328935.