# OpcAccessControlList Members

> Reference: Provides the abstract base class of the access control lists of an OpcServerSecurity, which authenticate the identity tokens of one OpcAccessControlTokenType and maintain one OpcAccessControlEntry per OpcPrincipal.

<dl class="api-definition">
<dt>Type</dt>
<dd><a href="./">OpcAccessControlList</a></dd>
<dt>Namespace</dt>
<dd><a href="../namespaces/opc.uafx.server">Opc.UaFx.Server</a></dd>
<dt>Assembly</dt>
<dd>Opc.UaFx.Advanced.dll</dd>
<dt>Package</dt>
<dd>Opc.UaFx.Advanced v2.59.0</dd>
</dl>

## Constructors

### OpcAccessControlList

<span class="api-meta">protected · since v2.6</span>

Initializes a new instance of the [OpcAccessControlList](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/) class using the `owner`, `operationAccessMode` and `endpointAccessMode` specified.

<div class="api-signature" data-lang="csharp">

```csharp
protected OpcAccessControlList(
    OpcServerBase owner,
    OpcAccessControlMode operationAccessMode,
    OpcAccessControlMode endpointAccessMode)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Sub New(
    owner As OpcServerBase,
    operationAccessMode As OpcAccessControlMode,
    endpointAccessMode As OpcAccessControlMode)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `owner` | [OpcServerBase](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcserverbase/) | The [OpcServerBase](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcserverbase/) the list belongs to. |
| `operationAccessMode` | [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) | One of the members defined by the [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) enumeration which specifies how the entries created by the list evaluate an operation which has neither been allowed nor denied explicitly. |
| `endpointAccessMode` | [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) | One of the members defined by the [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) enumeration which specifies how the entries created by the list evaluate an endpoint which has neither been enabled nor disabled explicitly. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `owner` is a null reference (Nothing in Visual Basic). |

## Properties

### EndpointAccessMode

Gets the mode which the entries created by the list use to evaluate an endpoint which has neither been enabled nor disabled explicitly.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcAccessControlMode EndpointAccessMode { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property EndpointAccessMode As OpcAccessControlMode
```

</div>

**Property value**

[OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/)

One of the members defined by the [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) enumeration.

### Entries

Gets a read-only collection of the entries of the list.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcAccessControlEntryReadOnlyCollection Entries { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property Entries As OpcAccessControlEntryReadOnlyCollection
```

</div>

**Property value**

[OpcAccessControlEntryReadOnlyCollection](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentryreadonlycollection/)

An instance of the [OpcAccessControlEntryReadOnlyCollection](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentryreadonlycollection/) class.

### IsConfigured

<span class="api-meta">virtual</span>

Gets a value indicating whether the [Configuration](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcserverbase/members#configuration) states a user token policy of the token type of the access control list.

<div class="api-signature" data-lang="csharp">

```csharp
public virtual bool IsConfigured { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Overridable ReadOnly Property IsConfigured As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the user token policies of the server configuration contain a policy of the token type of the access control list; otherwise the value false.

**Remarks**

The value is the default of [IsEnabled](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#isenabled) as long as that has not been set explicitly. While the server runs, the value follows the configuration it has been started with, which the start completes with the policies it offers. The [Configuration](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcserverbase/members#configuration) itself is not changed by a start.

### IsEnabled

Gets or sets a value indicating whether the server offers the token type of the access control list and uses the list to authenticate and authorize its users.

<div class="api-signature" data-lang="csharp">

```csharp
public bool IsEnabled { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Property IsEnabled As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the access control list is used; otherwise the value false. As long as no value has been set, the value of [IsConfigured](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#isconfigured) is used.

**Remarks**

An access control list that has not been set explicitly follows the configuration and, in case of the [OpcAnonymousAcl](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcanonymousacl/), the other access control lists: enabling for example only the [OpcUserNameAcl](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcusernameacl/) disables anonymous access, unless the anonymous access control list is enabled explicitly as well.

To keep the result independent of the other lists, set the value of every access control list used.

### OperationAccessMode

Gets the mode which the entries created by the list use to evaluate an operation which has neither been allowed nor denied explicitly.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcAccessControlMode OperationAccessMode { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property OperationAccessMode As OpcAccessControlMode
```

</div>

**Property value**

[OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/)

One of the members defined by the [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) enumeration.

### Owner

<span class="api-meta">protected</span>

Gets the server the list belongs to.

<div class="api-signature" data-lang="csharp">

```csharp
protected OpcServerBase Owner { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected ReadOnly Property Owner As OpcServerBase
```

</div>

**Property value**

[OpcServerBase](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcserverbase/)

The [OpcServerBase](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcserverbase/) specified on construction.

### TokenType

<span class="api-meta">protected · abstract · since v2.42</span>

Gets the type of the identity tokens the list is responsible for.

<div class="api-signature" data-lang="csharp">

```csharp
protected abstract OpcAccessControlTokenType TokenType { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected MustOverride ReadOnly Property TokenType As OpcAccessControlTokenType
```

</div>

**Property value**

[OpcAccessControlTokenType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontroltokentype/)

One of the members defined by the [OpcAccessControlTokenType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontroltokentype/) enumeration.

## Methods

### AddEntry

<span class="api-meta">3 overloads</span>

| Overload | Description |
|---|---|
| [AddEntry(OpcPrincipal)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#addentry-opc-uafx-server-opcprincipal) | Adds an entry for the `principal` specified to the list. |
| [AddEntry(OpcPrincipal, OpcAccessControlMode)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#addentry-opc-uafx-server-opcprincipal-opc-uafx-server-opcaccesscontrolmode) | Adds an entry for the `principal` specified to the list using the `operationAccessMode` specified. |
| [AddEntry(OpcPrincipal, OpcAccessControlMode, OpcAccessControlMode)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#addentry-opc-uafx-server-opcprincipal-opc-uafx-server-opcaccesscontrolmode-opc-uafx-server-opcaccesscontrolmode) | Adds an entry for the `principal` specified to the list using the `operationAccessMode` and `endpointAccessMode` specified. |

**Exceptions (all overloads)**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` is a null reference (Nothing in Visual Basic). |

#### AddEntry(OpcPrincipal)

Adds an entry for the `principal` specified to the list.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcAccessControlEntry AddEntry(OpcPrincipal principal)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function AddEntry(principal As OpcPrincipal) As OpcAccessControlEntry
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to add an entry for. |

**Returns**

[OpcAccessControlEntry](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/)

The [OpcAccessControlEntry](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/) of the `principal`.

**Remarks**

A new entry uses the [OperationAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#operationaccessmode) and the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list. If the list already contains an entry for a principal whose [Identity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/members#identity) has the same [Token](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcidentity/members#token), that entry is returned unchanged.

#### AddEntry(OpcPrincipal, OpcAccessControlMode)

Adds an entry for the `principal` specified to the list using the `operationAccessMode` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcAccessControlEntry AddEntry(
    OpcPrincipal principal,
    OpcAccessControlMode operationAccessMode)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function AddEntry(
    principal As OpcPrincipal,
    operationAccessMode As OpcAccessControlMode) As OpcAccessControlEntry
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to add an entry for. |
| `operationAccessMode` | [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) | One of the members defined by the [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) enumeration which specifies how a new entry evaluates an operation which has neither been allowed nor denied explicitly. |

**Returns**

[OpcAccessControlEntry](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/)

The [OpcAccessControlEntry](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/) of the `principal`.

**Remarks**

A new entry uses the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list. If the list already contains an entry for a principal whose [Identity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/members#identity) has the same [Token](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcidentity/members#token), that entry is returned unchanged, also if it uses another mode.

#### AddEntry(OpcPrincipal, OpcAccessControlMode, OpcAccessControlMode)

Adds an entry for the `principal` specified to the list using the `operationAccessMode` and `endpointAccessMode` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcAccessControlEntry AddEntry(
    OpcPrincipal principal,
    OpcAccessControlMode operationAccessMode,
    OpcAccessControlMode endpointAccessMode)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function AddEntry(
    principal As OpcPrincipal,
    operationAccessMode As OpcAccessControlMode,
    endpointAccessMode As OpcAccessControlMode) As OpcAccessControlEntry
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to add an entry for. |
| `operationAccessMode` | [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) | One of the members defined by the [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) enumeration which specifies how a new entry evaluates an operation which has neither been allowed nor denied explicitly. |
| `endpointAccessMode` | [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) | One of the members defined by the [OpcAccessControlMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolmode/) enumeration which specifies how a new entry evaluates an endpoint which has neither been enabled nor disabled explicitly. |

**Returns**

[OpcAccessControlEntry](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/)

The [OpcAccessControlEntry](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/) of the `principal`.

**Remarks**

If the list already contains an entry for a principal whose [Identity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/members#identity) has the same [Token](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcidentity/members#token), that entry is returned unchanged, also if it uses other modes.

### Allow

Allows the `operation` specified explicitly for the `principal` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public void Allow(OpcPrincipal principal, OpcOperationType operation)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub Allow(principal As OpcPrincipal, operation As OpcOperationType)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to allow the `operation` for. |
| `operation` | [OpcOperationType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcoperationtype/) | The [OpcOperationType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcoperationtype/) to allow. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` or `operation` is a null reference (Nothing in Visual Basic). |

**Remarks**

If the list does not yet contain an entry for the `principal`, an entry using the [OperationAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#operationaccessmode) and the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list is added.

### Authenticate

<span class="api-meta">abstract · since v2.42</span>

When overridden in a derived class, authenticates the `identityToken` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public abstract OpcPrincipal Authenticate(OpcIdentityToken identityToken)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public MustOverride Function Authenticate(
    identityToken As OpcIdentityToken) As OpcPrincipal
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `identityToken` | [OpcIdentityToken](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcidentitytoken/) | The [OpcIdentityToken](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcidentitytoken/) to authenticate. |

**Returns**

[OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/)

The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) of the `identityToken` if the list accepts the token; otherwise a null reference (Nothing in Visual Basic).

### ConfigureCore

<span class="api-meta">protected · virtual</span>

When overridden in a derived class, applies the configuration of the [Owner](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#owner) to the list.

<div class="api-signature" data-lang="csharp">

```csharp
protected virtual void ConfigureCore()
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Overridable Sub ConfigureCore()
```

</div>

**Remarks**

The method is called when the node managers of the server have been started. The base implementation does nothing.

### Deny

Denies the `operation` specified explicitly for the `principal` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public void Deny(OpcPrincipal principal, OpcOperationType operation)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub Deny(principal As OpcPrincipal, operation As OpcOperationType)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to deny the `operation` for. |
| `operation` | [OpcOperationType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcoperationtype/) | The [OpcOperationType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcoperationtype/) to deny. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` or `operation` is a null reference (Nothing in Visual Basic). |

**Remarks**

If the list does not yet contain an entry for the `principal`, an entry using the [OperationAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#operationaccessmode) and the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list is added.

### Disable

Disables the `endpoint` specified explicitly for the `principal` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public void Disable(OpcPrincipal principal, OpcEndpointIdentity endpoint)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub Disable(principal As OpcPrincipal, endpoint As OpcEndpointIdentity)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to disable the `endpoint` for. |
| `endpoint` | [OpcEndpointIdentity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcendpointidentity/) | The [OpcEndpointIdentity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcendpointidentity/) to disable. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` or `endpoint` is a null reference (Nothing in Visual Basic). |

**Remarks**

If the list does not yet contain an entry for the `principal`, an entry using the [OperationAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#operationaccessmode) and the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list is added.

### Enable

Enables the `endpoint` specified explicitly for the `principal` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public void Enable(OpcPrincipal principal, OpcEndpointIdentity endpoint)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub Enable(principal As OpcPrincipal, endpoint As OpcEndpointIdentity)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to enable the `endpoint` for. |
| `endpoint` | [OpcEndpointIdentity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcendpointidentity/) | The [OpcEndpointIdentity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcendpointidentity/) to enable. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` or `endpoint` is a null reference (Nothing in Visual Basic). |

**Remarks**

If the list does not yet contain an entry for the `principal`, an entry using the [OperationAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#operationaccessmode) and the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list is added.

### IsEndpointDisabled

<span class="api-meta">virtual · 2 overloads</span>

| Overload | Description |
|---|---|
| [IsEndpointDisabled(OpcPrincipal)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#isendpointdisabled-opc-uafx-server-opcprincipal)<span class="api-meta">virtual</span> | Determines whether the endpoint of the current secure channel is disabled for the `principal` specified. |
| [IsEndpointDisabled(OpcPrincipal, OpcEndpointIdentity)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#isendpointdisabled-opc-uafx-server-opcprincipal-opc-uafx-opcendpointidentity)<span class="api-meta">virtual</span> | Determines whether the `endpoint` specified is disabled for the `principal` specified. |

#### IsEndpointDisabled(OpcPrincipal)

<span class="api-meta">virtual</span>

Determines whether the endpoint of the current secure channel is disabled for the `principal` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public virtual bool IsEndpointDisabled(OpcPrincipal principal)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Overridable Function IsEndpointDisabled(
    principal As OpcPrincipal) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to verify. |

**Returns**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the entry of the `principal` disables the endpoint (see [IsDisabled](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/members#isdisabled)); otherwise the value false.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` is a null reference (Nothing in Visual Basic) or the method is not called in the context of a secure channel (see [GetCurrent](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcendpointidentity/members#getcurrent)). |

**Remarks**

If the list does not yet contain an entry for the `principal`, an entry using the [OperationAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#operationaccessmode) and the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list is added.

#### IsEndpointDisabled(OpcPrincipal, OpcEndpointIdentity)

<span class="api-meta">virtual</span>

Determines whether the `endpoint` specified is disabled for the `principal` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public virtual bool IsEndpointDisabled(
    OpcPrincipal principal,
    OpcEndpointIdentity endpoint)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Overridable Function IsEndpointDisabled(
    principal As OpcPrincipal,
    endpoint As OpcEndpointIdentity) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to verify. |
| `endpoint` | [OpcEndpointIdentity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcendpointidentity/) | The [OpcEndpointIdentity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcendpointidentity/) to verify. |

**Returns**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the entry of the `principal` disables the `endpoint` (see [IsDisabled](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/members#isdisabled)); otherwise the value false.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` or `endpoint` is a null reference (Nothing in Visual Basic). |

**Remarks**

If the list does not yet contain an entry for the `principal`, an entry using the [OperationAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#operationaccessmode) and the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list is added.

### IsEndpointEnabled

<span class="api-meta">virtual · 2 overloads</span>

| Overload | Description |
|---|---|
| [IsEndpointEnabled(OpcPrincipal)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#isendpointenabled-opc-uafx-server-opcprincipal)<span class="api-meta">virtual</span> | Determines whether the endpoint of the current secure channel is enabled for the `principal` specified. |
| [IsEndpointEnabled(OpcPrincipal, OpcEndpointIdentity)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#isendpointenabled-opc-uafx-server-opcprincipal-opc-uafx-opcendpointidentity)<span class="api-meta">virtual</span> | Determines whether the `endpoint` specified is enabled for the `principal` specified. |

#### IsEndpointEnabled(OpcPrincipal)

<span class="api-meta">virtual</span>

Determines whether the endpoint of the current secure channel is enabled for the `principal` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public virtual bool IsEndpointEnabled(OpcPrincipal principal)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Overridable Function IsEndpointEnabled(
    principal As OpcPrincipal) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to verify. |

**Returns**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the entry of the `principal` enables the endpoint (see [IsEnabled](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/members#isenabled)); otherwise the value false.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` is a null reference (Nothing in Visual Basic) or the method is not called in the context of a secure channel (see [GetCurrent](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcendpointidentity/members#getcurrent)). |

**Remarks**

If the list does not yet contain an entry for the `principal`, an entry using the [OperationAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#operationaccessmode) and the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list is added.

#### IsEndpointEnabled(OpcPrincipal, OpcEndpointIdentity)

<span class="api-meta">virtual</span>

Determines whether the `endpoint` specified is enabled for the `principal` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public virtual bool IsEndpointEnabled(
    OpcPrincipal principal,
    OpcEndpointIdentity endpoint)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Overridable Function IsEndpointEnabled(
    principal As OpcPrincipal,
    endpoint As OpcEndpointIdentity) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to verify. |
| `endpoint` | [OpcEndpointIdentity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcendpointidentity/) | The [OpcEndpointIdentity](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcendpointidentity/) to verify. |

**Returns**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the entry of the `principal` enables the `endpoint` (see [IsEnabled](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/members#isenabled)); otherwise the value false.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` or `endpoint` is a null reference (Nothing in Visual Basic). |

**Remarks**

If the list does not yet contain an entry for the `principal`, an entry using the [OperationAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#operationaccessmode) and the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list is added.

### IsOperationAllowed

<span class="api-meta">virtual</span>

Determines whether the `operation` specified is allowed for the `principal` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public virtual bool IsOperationAllowed(
    OpcPrincipal principal,
    OpcOperationType operation)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Overridable Function IsOperationAllowed(
    principal As OpcPrincipal,
    operation As OpcOperationType) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to verify. |
| `operation` | [OpcOperationType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcoperationtype/) | The [OpcOperationType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcoperationtype/) to verify. |

**Returns**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the entry of the `principal` allows the `operation` (see [IsAllowed](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/members#isallowed-opc-uafx-server-opcoperationtype)); otherwise the value false.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` or `operation` is a null reference (Nothing in Visual Basic). |

**Remarks**

If the list does not yet contain an entry for the `principal`, an entry using the [OperationAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#operationaccessmode) and the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list is added.

### IsOperationDenied

<span class="api-meta">virtual</span>

Determines whether the `operation` specified is denied for the `principal` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public virtual bool IsOperationDenied(
    OpcPrincipal principal,
    OpcOperationType operation)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Overridable Function IsOperationDenied(
    principal As OpcPrincipal,
    operation As OpcOperationType) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) to verify. |
| `operation` | [OpcOperationType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcoperationtype/) | The [OpcOperationType](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcoperationtype/) to verify. |

**Returns**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the entry of the `principal` denies the `operation` (see [IsDenied](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/members#isdenied-opc-uafx-server-opcoperationtype)); otherwise the value false.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` or `operation` is a null reference (Nothing in Visual Basic). |

**Remarks**

If the list does not yet contain an entry for the `principal`, an entry using the [OperationAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#operationaccessmode) and the [EndpointAccessMode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#endpointaccessmode) of the list is added.

### RemoveEntry

<span class="api-meta">2 overloads</span>

| Overload | Description |
|---|---|
| [RemoveEntry(OpcAccessControlEntry)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#removeentry-opc-uafx-server-opcaccesscontrolentry) | Removes the `entry` specified from the list. |
| [RemoveEntry(OpcPrincipal)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrollist/members#removeentry-opc-uafx-server-opcprincipal) | Removes the entry of the `principal` specified from the list. |

#### RemoveEntry(OpcAccessControlEntry)

Removes the `entry` specified from the list.

<div class="api-signature" data-lang="csharp">

```csharp
public bool RemoveEntry(OpcAccessControlEntry entry)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function RemoveEntry(entry As OpcAccessControlEntry) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `entry` | [OpcAccessControlEntry](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/) | The [OpcAccessControlEntry](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcaccesscontrolentry/) to remove. |

**Returns**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the `entry` has been removed; otherwise the value false.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `entry` is a null reference (Nothing in Visual Basic). |

#### RemoveEntry(OpcPrincipal)

Removes the entry of the `principal` specified from the list.

<div class="api-signature" data-lang="csharp">

```csharp
public bool RemoveEntry(OpcPrincipal principal)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function RemoveEntry(principal As OpcPrincipal) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `principal` | [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) | The [OpcPrincipal](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.server.opcprincipal/) whose entry is to be removed. |

**Returns**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true if the list contained an entry for the `principal` and the entry has been removed; otherwise the value false.

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `principal` is a null reference (Nothing in Visual Basic). |
