Как добавить права доступа к узлу в OPCFoundation OPCUAC#

Место общения программистов C#
Ответить
Anonymous
 Как добавить права доступа к узлу в OPCFoundation OPCUA

Сообщение Anonymous »

Я пытаюсь добавить определенные разрешения ролей для определенных пользователей на определенный узел. Для этого я использую этот код:

Код: Выделить всё

private BaseDataVariableState createThing(NodeId requestedNodeId, NodeId requestedDataType, string requestedBrowseName, BaseObjectState parentNode, bool x)
{
BaseDataVariableState variable = new BaseDataVariableState(parentNode);

variable.SymbolicName = requestedBrowseName;
variable.ReferenceTypeId = ReferenceTypes.Organizes;
variable.TypeDefinitionId = VariableTypeIds.BaseDataVariableType;
variable.NodeId = requestedNodeId;
variable.BrowseName = new QualifiedName(requestedBrowseName);
variable.DisplayName = new LocalizedText(requestedBrowseName);
variable.WriteMask = AttributeWriteMask.DisplayName | AttributeWriteMask.Description;
variable.UserWriteMask = AttributeWriteMask.DisplayName | AttributeWriteMask.Description;
variable.DataType = requestedDataType;
variable.ValueRank = ValueRanks.Scalar;
variable.AccessLevel = AccessLevels.CurrentReadOrWrite;
variable.UserAccessLevel = AccessLevels.CurrentReadOrWrite;
variable.Historizing = true;
variable.Value = 0;
variable.StatusCode = StatusCodes.Good;
variable.Timestamp = DateTime.UtcNow;
variable.RolePermissions = addPredefinedRolePermissions();
if (opcUaServer != null)
{
AddPredefinedNode(SystemContext, variable);
}

if (FindNodeInAddressSpace(variable.NodeId) != null)
{
Console.WriteLine("Node succesfully created with NiD: " + variable.NodeId);
}
return variable;
}

private RolePermissionTypeCollection addPredefinedRolePermissions()
{
RolePermissionTypeCollection listPermissions = new RolePermissionTypeCollection();
var limbo = new RolePermissionType();
limbo.Permissions = (uint)PermissionType.None;
limbo.RoleId = Opc.Ua.ObjectIds.WellKnownRole_Observer;
var user = new RolePermissionType();
user.Permissions = (uint)(PermissionType.Browse | PermissionType.Read | PermissionType.ReadRolePermissions |
PermissionType.Write);;
user.RoleId = Opc.Ua.ObjectIds.WellKnownRole_Anonymous;
var god = new RolePermissionType();
god.Permissions = (uint)(PermissionType.Browse | PermissionType.Read | PermissionType.ReadRolePermissions |
PermissionType.Write | PermissionType.Call | PermissionType.ReadHistory | PermissionType.ReceiveEvents);
god.RoleId = Opc.Ua.ObjectIds.WellKnownRole_Supervisor;
return listPermissions;
}
Затем я подключаюсь ко всем трем именам пользователей/типам подключения, используя отдельные экземпляры UAExpert. Однако установленные мною ролевые разрешения не оказывают никакого влияния, и все три экземпляра UAExpert могут выполнять одни и те же операции на узле. Что я делаю не так?
Ура!

Подробнее здесь: https://stackoverflow.com/questions/759 ... tion-opcua
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»