open62541 1.4.15
Open source implementation of OPC UA
Loading...
Searching...
No Matches
accesscontrol.h
Go to the documentation of this file.
1/** This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
4 *
5 * Copyright 2017 (c) Fraunhofer IOSB (Author: Julius Pfrommer)
6 * Copyright 2017 (c) Stefan Profanter, fortiss GmbH
7 */
8
9#ifndef UA_PLUGIN_ACCESS_CONTROL_H_
10#define UA_PLUGIN_ACCESS_CONTROL_H_
11
12#include <open62541/util.h>
13
15
16struct UA_AccessControl;
18
19
20
22 void *context;
23 void (*clear)(UA_AccessControl *ac);
24
25 /* Supported login mechanisms. The server endpoints are created from here. */
28
29 /* Authenticate a session. The session context is attached to the session
30 * and later passed into the node-based access control callbacks. The new
31 * session is rejected if a StatusCode other than UA_STATUSCODE_GOOD is
32 * returned.
33 *
34 * Note that this callback can be called several times for a Session. For
35 * example when a Session is recovered (activated) on a new
36 * SecureChannel. */
38 const UA_EndpointDescription *endpointDescription,
39 const UA_ByteString *secureChannelRemoteCertificate,
40 const UA_NodeId *sessionId,
41 const UA_ExtensionObject *userIdentityToken,
42 void **sessionContext);
43
44 /* Deauthenticate a session and cleanup */
46 const UA_NodeId *sessionId, void *sessionContext);
47
48 /* Access control for all nodes*/
50 const UA_NodeId *sessionId, void *sessionContext,
51 const UA_NodeId *nodeId, void *nodeContext);
52
53 /* Additional access control for variable nodes */
55 const UA_NodeId *sessionId, void *sessionContext,
56 const UA_NodeId *nodeId, void *nodeContext);
57
58 /* Additional access control for method nodes */
60 const UA_NodeId *sessionId, void *sessionContext,
61 const UA_NodeId *methodId, void *methodContext);
62
63 /* Additional access control for calling a method node in the context of a
64 * specific object */
66 const UA_NodeId *sessionId, void *sessionContext,
67 const UA_NodeId *methodId, void *methodContext,
68 const UA_NodeId *objectId, void *objectContext);
69
70 /* Allow adding a node */
72 const UA_NodeId *sessionId, void *sessionContext,
73 const UA_AddNodesItem *item);
74
75 /* Allow adding a reference */
77 const UA_NodeId *sessionId, void *sessionContext,
78 const UA_AddReferencesItem *item);
79
80 /* Allow deleting a node */
82 const UA_NodeId *sessionId, void *sessionContext,
83 const UA_DeleteNodesItem *item);
84
85 /* Allow deleting a reference */
87 const UA_NodeId *sessionId, void *sessionContext,
88 const UA_DeleteReferencesItem *item);
89
90 /* Allow browsing a node */
92 const UA_NodeId *sessionId, void *sessionContext,
93 const UA_NodeId *nodeId, void *nodeContext);
94
95#ifdef UA_ENABLE_SUBSCRIPTIONS
96 /* Allow transfer of a subscription to another session. The Server shall
97 * validate that the Client of that Session is operating on behalf of the
98 * same user */
100 const UA_NodeId *oldSessionId, void *oldSessionContext,
101 const UA_NodeId *newSessionId, void *newSessionContext);
102#endif
103
104#ifdef UA_ENABLE_HISTORIZING
105 /* Allow insert,replace,update of historical data */
107 const UA_NodeId *sessionId, void *sessionContext,
108 const UA_NodeId *nodeId,
109 UA_PerformUpdateType performInsertReplace,
110 const UA_DataValue *value);
111
112 /* Allow delete of historical data */
114 const UA_NodeId *sessionId, void *sessionContext,
115 const UA_NodeId *nodeId,
116 UA_DateTime startTimestamp,
117 UA_DateTime endTimestamp,
118 bool isDeleteModified);
119#endif
120};
121
123
124#endif /* UA_PLUGIN_ACCESS_CONTROL_H_ */
struct UA_Server UA_Server
Definition common.h:198
#define _UA_BEGIN_DECLS
#undef UA_DEBUG_DUMP_PKGS
Definition config.h:100
#define _UA_END_DECLS
Definition config.h:107
void(* closeSession)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext)
void(* clear)(UA_AccessControl *ac)
UA_Boolean(* getUserExecutable)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext, const UA_NodeId *methodId, void *methodContext)
UA_Boolean(* allowTransferSubscription)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *oldSessionId, void *oldSessionContext, const UA_NodeId *newSessionId, void *newSessionContext)
UA_Byte(* getUserAccessLevel)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext, const UA_NodeId *nodeId, void *nodeContext)
size_t userTokenPoliciesSize
UA_Boolean(* getUserExecutableOnObject)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext, const UA_NodeId *methodId, void *methodContext, const UA_NodeId *objectId, void *objectContext)
UA_Boolean(* allowBrowseNode)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext, const UA_NodeId *nodeId, void *nodeContext)
UA_Boolean(* allowAddReference)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext, const UA_AddReferencesItem *item)
UA_Boolean(* allowDeleteReference)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext, const UA_DeleteReferencesItem *item)
UA_Boolean(* allowHistoryUpdateDeleteRawModified)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext, const UA_NodeId *nodeId, UA_DateTime startTimestamp, UA_DateTime endTimestamp, bool isDeleteModified)
UA_UInt32(* getUserRightsMask)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext, const UA_NodeId *nodeId, void *nodeContext)
UA_Boolean(* allowDeleteNode)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext, const UA_DeleteNodesItem *item)
UA_Boolean(* allowAddNode)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext, const UA_AddNodesItem *item)
UA_StatusCode(* activateSession)(UA_Server *server, UA_AccessControl *ac, const UA_EndpointDescription *endpointDescription, const UA_ByteString *secureChannelRemoteCertificate, const UA_NodeId *sessionId, const UA_ExtensionObject *userIdentityToken, void **sessionContext)
UA_UserTokenPolicy * userTokenPolicies
UA_Boolean(* allowHistoryUpdateUpdateData)(UA_Server *server, UA_AccessControl *ac, const UA_NodeId *sessionId, void *sessionContext, const UA_NodeId *nodeId, UA_PerformUpdateType performInsertReplace, const UA_DataValue *value)
AddReferencesItem.
DeleteNodesItem.
DeleteReferencesItem.
EndpointDescription.
UserTokenPolicy.
char id nodeId
Definition types.h:440
_UA_BEGIN_DECLS typedef bool UA_Boolean
This Source Code Form is subject to the terms of the Mozilla Public License, v.
Definition types.h:27
uint32_t UA_UInt32
Definition types.h:57
uint32_t UA_StatusCode
Definition types.h:82
uint8_t UA_Byte
Definition types.h:37
UA_PerformUpdateType
PerformUpdateType.