Установка имени пользователя и роли в opcua

Я не понимаю, как создать имя пользователя и привязать к нему роль (или наоборот?) для моего сервера opcua. Я использую библиотеки Unified Automation. Пока у меня есть сервер, к которому я могу подключиться как анонимный, и я могу просматривать свою модель (но без значений, имеет смысл). Я могу создать UserNameIdentityToken, установить все необходимые значения, но я не могу позже подключиться к нему, что, как я полагаю, связано с тем, что я не назначил его своему серверу. В любом случае, я потерялся здесь и не нашел ответов в документации. Спасибо :)

1 ответ

Это зависит от того, какие роли вы хотите иметь в своей системе. Единственная роль, предопределенная в UA API, — это роль администратора.context.UserIdentity.IsAdministrator.

Одним из способов реализации контроля доступа является переопределениеHasAccess(см. документацию ) функция вNodeManagerсорт. Таким образом, любое действие, такое как «Чтение», «Запись» или «Обзор», позволит вам проверить пользователя и определить, должен ли этот пользователь иметь доступ или нет.

Фактические имена пользователей могут храниться в какой-либо базе данных или API.

Вот простой пример , когда имена пользователей жестко запрограммированы в коде сервера. В реальном приложении они будут кодировать из какой-то базы данных или API.

Для проверки имени пользователя при первоначальном входе в систему вам необходимо добавить прослушиватель вSessionManager.ImpersonateUserкоторый проверяет данные входа пользователя. Например, вы можете проверить базу данных на наличие имени пользователя и пароля и установитьImpersonateEventArgs.IdentityValidationError = StatusCodes.BadIdentityTokenRejected;если логин плохой.

Другие вопросы по тегам