2.4 KiB
SHD Desktop
Исходники настольного приложения SHD для Apple и Windows.
Папки
Apple/— приложение macOS на Swift и WKWebView.Windows/— место для версии Windows.
Вход в macOS-приложении
Клик по существующей кнопке passkey на странице входа в WKWebView перехватывается приложением и открывает тот же DEV-сайт в системном браузере. После входа callback возвращает код в приложение, а WKWebView отправляет его серверу и получает веб-сессию. Вход в приложении пока включён только для DEV, где серверный поток уже развёрнут.
Серверный поток развёрнут на DEV. Клиент использует такой контракт:
GET /desktop-auth/authorizeс параметрамиclient_id=shd-macos,redirect_uri=shd-auth://callback,response_type=code,state,code_challengeиcode_challenge_method=S256. После обычного входа, включая passkey, сервер возвращает браузер наshd-auth://callback?code=…&state=….POST /desktop-auth/completeс полямиcodeиcode_verifier. Сервер проверяет одноразовый код и PKCE, создаёт веб-сессию, устанавливает защищённую cookie и перенаправляет WKWebView на SHD.
Код должен быть одноразовым, связанным с PKCE и действовать не более 60 секунд. Callback URI фиксирован в приложении. Маршрут завершения должен принимать только такой код и verifier; исключение CSRF-защиты допустимо только для этого маршрута при обязательной проверке кода и PKCE.
Сборка macOS-приложения
Из каталога Apple/ запустить ./Scripts/build-app.sh. Сборка создаёт проверенный архив Apple/dist/SHD-macOS-arm64.zip и не устанавливает приложение в /Applications.