Использование идентификаторов сторон в Project DABL в веб-приложении React Typescript (клонированное приложение create-daml-app)
Я пытаюсь создать веб-приложение на основе create-daml-app, и этот TypeScript для веб-приложений также будет развернут в Project DABL. Как мы можем использовать Стороны, которые были настроены в настройках Project DABL Ledger, и использовать их в качестве входа в веб-приложение с помощью React Typescript? На основе приложения create-daml-app они используют ссылку (https://login.projectdabl.com/auth/login?ledgerId=$%7BledgerId%7D%60) для входа в систему, в которой используется учетная запись Project DABL.
Я знаю, что мы можем загрузить стороны как json, а затем использовать их в веб-приложении, но можем ли мы динамически использовать напрямую настройку, которая была сделана в Project DABL Ledger Settings?
Спасибо за помощь в будущем!
1 ответ
В DABL создаваемые вами стороны сопоставляются с вашей учетной записью пользователя DABL. При первом присоединении к реестру или его создании группа автоматически создается на ваше имя, и у вас есть возможность добавить больше. Однако каждая дополнительная сторона, которую вы добавляете через консоль, по-прежнему сопоставляется с вашей конкретной учетной записью DABL.
Взаимодействие с реестром санкционировано сторонними токенами JWT. Кнопка и ссылка входа в систему - это, по сути, ярлык, позволяющий пользователю войти в свою учетную запись DABL, при этом автоматически предоставляя идентификатор стороны / JWT для стороны по умолчанию этого пользователя обратно в развернутый экземпляр веб-приложения. Веб-приложение должно хранить полученный токен и использовать его при взаимодействии с API.
Если вы создаете дополнительные партии Алисы и Боба с целью демонстрации или тестирования вашего приложения с точки зрения различных сторон, я бы добавил некоторые дополнительные входные данные формы в компонент входа в систему, которые позволяют напрямую вводить идентификатор стороны и JWT. Их можно скопировать со страницы настроек главной книги в консоли. Ваше приложение React будет просто читать входные данные ID/JWT, сохранять их в состоянии и использовать их при выполнении запросов API в будущем. Таким образом, вам не нужно постоянно загружать / заменятьparties.json
файл каждый день.
Компонент входа в систему для DABL Chat - это хороший пример приложения, которое вы можете посмотреть, которое обрабатывает как кнопку, так и этот подход к вводу ID/JWT. Вы можете развернуть его копию в новом проекте, если хотите увидеть, как это работает, или взглянуть на исходный код для лучшего понимания. Поскольку вы также используетеcreate-daml-app
в качестве шаблона вам нужно будет внести некоторые изменения, чтобы добавить эти входные данные и подключить их к вызовам API.
Обратите внимание, что если Алиса и Боб должны быть настоящими производственными пользователями системы, то рекомендуемый подход состоит в том, чтобы они использовали кнопку "Войти с помощью DABL", чтобы они присоединились к отдельным учетным записям DABL. В этом сценарииparties.json
из ваших настроек Ledger даже не будет включать их JWT, поскольку у вас не будет доступа к учетным данным, принадлежащим другим учетным записям.
Дополнительную информацию см. В документации DABL по аутентификации и адаптации.