|
| 1 | +# OPC UA Profiles and Facets Support |
| 2 | + |
| 3 | +This document describes which [OPC UA Profiles and Facets](https://profiles.opcfoundation.org/) are implemented in the OPC UA .NET Standard Stack. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +The OPC UA .NET Standard Stack is a reference implementation that targets OPC UA specification version 1.05. It has been certified for compliance through an OPC Foundation Certification Test Lab and is continuously tested for compliance using the latest Compliance Test Tool (CTT). |
| 8 | + |
| 9 | +For a complete list of all OPC UA profiles, visit the [OPC Foundation Profile Reporting](https://profiles.opcfoundation.org/profile/) website. |
| 10 | + |
| 11 | +## Server Profiles |
| 12 | + |
| 13 | +The Reference Server implementation supports the following OPC UA Server profiles: |
| 14 | + |
| 15 | +### Core Server Profiles |
| 16 | + |
| 17 | +- **[Standard UA Server Profile (2017)](http://opcfoundation.org/UA-Profile/Server/StandardUA2017)** - The core OPC UA Server profile that includes: |
| 18 | + - Basic server capabilities |
| 19 | + - Discovery services |
| 20 | + - Session management |
| 21 | + - Subscription management |
| 22 | + - MonitoredItem services |
| 23 | + - View services (Browse, BrowseNext, TranslateBrowsePathsToNodeIds) |
| 24 | + - Attribute services (Read, Write, HistoryRead, HistoryUpdate) |
| 25 | + - Query services |
| 26 | + |
| 27 | +### Functional Facets |
| 28 | + |
| 29 | +- **[Data Access Server Facet](http://opcfoundation.org/UA-Profile/Server/DataAccess)** - Support for data access functionality including variables, data types, and data change notifications |
| 30 | + |
| 31 | +- **[Method Server Facet](http://opcfoundation.org/UA-Profile/Server/Methods)** - Support for calling methods on objects in the address space |
| 32 | + |
| 33 | +- **[Reverse Connect Facet](http://opcfoundation.org/UA-Profile/Server/ReverseConnect)** - Server can initiate connections to clients (see [Reverse Connect documentation](ReverseConnect.md)) |
| 34 | + |
| 35 | +- **[Client Redundancy Facet](http://opcfoundation.org/UA-Profile/Server/ClientRedundancy)** - Support for client redundancy features including: |
| 36 | + - Transfer subscriptions between servers |
| 37 | + - Session management for redundant connections |
| 38 | + - See [Transfer Subscriptions documentation](TransferSubscription.md) |
| 39 | + |
| 40 | +### Additional Features |
| 41 | + |
| 42 | +The server implementation also provides support for: |
| 43 | + |
| 44 | +- **Durable Subscriptions** - Subscriptions that persist across reconnections (see [Durable Subscriptions documentation](DurableSubscription.md)) |
| 45 | +- **Complex Types** - Custom structures and enumerations (see [Complex Types documentation](ComplexTypes.md)) |
| 46 | +- **Role-Based Access Control** - WellKnownRoles and RoleBasedUserManagement (see [Role-Based User Management documentation](RoleBasedUserManagement.md)) |
| 47 | +- **Async Server Support** - Asynchronous node managers using Task-based Asynchronous Pattern (TAP) (see [Async Server Support documentation](AsyncServerSupport.md)) |
| 48 | + |
| 49 | +### Currently Not Supported (Server) |
| 50 | + |
| 51 | +The following server profiles/facets are **not yet fully supported**: |
| 52 | + |
| 53 | +- **Alarms & Conditions** - Only a limited set of alarms is currently implemented (`ExclusiveLevel`, `NonExclusiveLevel`, `OffNormal`) |
| 54 | +- **Historical Access** - Limited support for historical data access |
| 55 | +- **Events** - Limited event support |
| 56 | +- **Aggregates Server Facet** - Historical data aggregation |
| 57 | +- **Query Server Facet** - Advanced query capabilities |
| 58 | + |
| 59 | +## Client Profiles |
| 60 | + |
| 61 | +The Client implementation supports: |
| 62 | + |
| 63 | +- **Standard UA Client Profile** - Full client functionality for connecting to OPC UA servers |
| 64 | +- **Subscription management** - Creating and managing subscriptions and monitored items |
| 65 | +- **Transfer Subscriptions** - Support for transferring subscriptions between servers (see [Transfer Subscriptions documentation](TransferSubscription.md)) |
| 66 | +- **Reverse Connect** - Client can accept connections initiated by servers (see [Reverse Connect documentation](ReverseConnect.md)) |
| 67 | + |
| 68 | +## Transport Profiles |
| 69 | + |
| 70 | +The stack implements the following transport profiles: |
| 71 | + |
| 72 | +### Client and Server Transport Support |
| 73 | + |
| 74 | +- **[UA TCP Transport](http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary)** (`opc.tcp://`) - The primary OPC UA binary transport protocol over TCP |
| 75 | + - Full support for UA Secure Conversation (UASC) |
| 76 | + - Binary encoding |
| 77 | + - Reverse connect capability |
| 78 | + |
| 79 | +- **[HTTPS Binary Transport](http://opcfoundation.org/UA-Profile/Transport/https-uabinary)** (`opc.https://` and `https://`) - OPC UA binary protocol over HTTPS |
| 80 | + - Binary encoding over HTTPS |
| 81 | + - TLS/SSL encryption |
| 82 | + |
| 83 | +### PubSub Transport Support |
| 84 | + |
| 85 | +The [PubSub library](PubSub.md) supports the following transport profiles: |
| 86 | + |
| 87 | +- **[PubSub UDP UADP](http://opcfoundation.org/UA-Profile/Transport/pubsub-udp-uadp)** - UDP transport with UADP message encoding |
| 88 | +- **[PubSub MQTT UADP](http://opcfoundation.org/UA-Profile/Transport/pubsub-mqtt-uadp)** - MQTT transport with UADP message encoding |
| 89 | +- **[PubSub MQTT JSON](http://opcfoundation.org/UA-Profile/Transport/pubsub-mqtt-json)** - MQTT transport with JSON message encoding |
| 90 | + |
| 91 | +### Currently Not Supported (Transport) |
| 92 | + |
| 93 | +- **WebSocket Transport** (`opc.wss://`) - UA WebSocket Secure (WSS) transport is not currently supported |
| 94 | +- **HTTPS JSON Transport** - JSON encoding over HTTPS is not currently supported |
| 95 | + |
| 96 | +## Security Profiles |
| 97 | + |
| 98 | +The stack supports the following OPC UA security profiles for secure communication: |
| 99 | + |
| 100 | +### RSA-Based Security Policies |
| 101 | + |
| 102 | +- **[Basic256Sha256](http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256)** - RSA encryption with SHA-256 |
| 103 | + - 256-bit AES encryption |
| 104 | + - RSA-OAEP for key encryption |
| 105 | + - HMAC-SHA256 for message authentication |
| 106 | + - Minimum key size: 2048 bits |
| 107 | + |
| 108 | +- **[Aes128_Sha256_RsaOaep](http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep)** - 128-bit AES with SHA-256 |
| 109 | + - 128-bit AES encryption |
| 110 | + - RSA-OAEP for key encryption |
| 111 | + - HMAC-SHA256 for message authentication |
| 112 | + |
| 113 | +- **[Aes256_Sha256_RsaPss](http://opcfoundation.org/UA/SecurityPolicy#Aes256_Sha256_RsaPss)** - 256-bit AES with RSA-PSS signatures |
| 114 | + - 256-bit AES encryption |
| 115 | + - RSA-PSS signatures |
| 116 | + - HMAC-SHA256 for message authentication |
| 117 | + |
| 118 | +### ECC-Based Security Policies |
| 119 | + |
| 120 | +Support for Elliptic Curve Cryptography (ECC) security policies (see [ECC Profiles documentation](EccProfiles.md)): |
| 121 | + |
| 122 | +- **[ECC_nistP256](http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP256)** - NIST P-256 curve |
| 123 | +- **[ECC_nistP384](http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP384)** - NIST P-384 curve |
| 124 | +- **[ECC_brainpoolP256r1](http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP256r1)** - Brainpool P-256r1 curve |
| 125 | +- **[ECC_brainpoolP384r1](http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP384r1)** - Brainpool P-384r1 curve |
| 126 | + |
| 127 | +**Platform Requirements for ECC:** ECC support is available on .NET Framework 4.8, .NET Standard 2.1, and .NET 5.0 or later. Not all curves are supported by all OS platforms and .NET implementations. |
| 128 | + |
| 129 | +### Deprecated Security Policies |
| 130 | + |
| 131 | +The following security policies are deprecated but still supported for backward compatibility: |
| 132 | + |
| 133 | +- **[Basic256](http://opcfoundation.org/UA/SecurityPolicy#Basic256)** - Deprecated, uses SHA-1 |
| 134 | +- **[Basic128Rsa15](http://opcfoundation.org/UA/SecurityPolicy#Basic128Rsa15)** - Deprecated, uses SHA-1 and RSA-PKCS#1 v1.5 |
| 135 | + |
| 136 | +**Note:** SHA-1 signed certificates are rejected by default (`RejectSHA1SignedCertificates` configuration option). These deprecated policies should only be enabled for compatibility with legacy systems. |
| 137 | + |
| 138 | +### Security Policy None |
| 139 | + |
| 140 | +- **[None](http://opcfoundation.org/UA/SecurityPolicy#None)** - No security |
| 141 | + - Should only be used for testing or on isolated networks |
| 142 | + - Not recommended for production environments |
| 143 | + |
| 144 | +## User Authentication |
| 145 | + |
| 146 | +The stack supports the following user authentication mechanisms: |
| 147 | + |
| 148 | +- **Anonymous** - No user authentication |
| 149 | +- **Username/Password** - User credentials encrypted using the active security policy |
| 150 | +- **X.509 Certificate** - User authentication via X.509 certificates |
| 151 | + |
| 152 | +Additional token types: |
| 153 | +- **JWT (JSON Web Tokens)** - Support for issued tokens complying with JWT specification |
| 154 | + |
| 155 | +## Certificate Types |
| 156 | + |
| 157 | +The stack supports the following certificate types for application authentication: |
| 158 | + |
| 159 | +### RSA Certificates |
| 160 | +- **RsaSha256ApplicationCertificateType** - RSA certificates with SHA-256 signatures |
| 161 | + - Default minimum key size: 2048 bits |
| 162 | + - Recommended for production use |
| 163 | + |
| 164 | +### ECC Certificates |
| 165 | +- **EccNistP256ApplicationCertificateType** - ECC certificates with NIST P-256 curve |
| 166 | +- **EccNistP384ApplicationCertificateType** - ECC certificates with NIST P-384 curve |
| 167 | +- **EccBrainpoolP256r1ApplicationCertificateType** - ECC certificates with Brainpool P-256r1 curve |
| 168 | +- **EccBrainpoolP384r1ApplicationCertificateType** - ECC certificates with Brainpool P-384r1 curve |
| 169 | + |
| 170 | +See [Certificates documentation](Certificates.md) for more information on certificate management. |
| 171 | + |
| 172 | +## Global Discovery Server (GDS) |
| 173 | + |
| 174 | +The stack includes a Global Discovery Server implementation that supports: |
| 175 | + |
| 176 | +- Application registration and discovery |
| 177 | +- Certificate management |
| 178 | +- Pull and Push certificate management models |
| 179 | +- Support for both RSA and ECC certificate types |
| 180 | +- Certificate revocation lists (CRL) |
| 181 | + |
| 182 | +## Message Encoding |
| 183 | + |
| 184 | +The stack supports the following message encoding formats: |
| 185 | + |
| 186 | +- **UA Binary** - OPC UA binary encoding (primary encoding used for UA-TCP and HTTPS) |
| 187 | +- **UADP** - UA Data Protocol for PubSub |
| 188 | +- **JSON** - JSON encoding for PubSub MQTT |
| 189 | + |
| 190 | +## Specification Compliance |
| 191 | + |
| 192 | +- **OPC UA Specification:** Version 1.05 |
| 193 | +- **Certification:** The Reference Server has been certified for compliance through an OPC Foundation Certification Test Lab |
| 194 | +- **Testing:** All releases are verified for compliance using the latest Compliance Test Tool (CTT) |
| 195 | + |
| 196 | +## Configuration |
| 197 | + |
| 198 | +### Server Profile Configuration |
| 199 | + |
| 200 | +Server profiles are configured in the server configuration file using the `ServerProfileArray` element: |
| 201 | + |
| 202 | +```xml |
| 203 | +<ServerConfiguration> |
| 204 | + <!-- see https://profiles.opcfoundation.org/ for list of available profiles --> |
| 205 | + <ServerProfileArray> |
| 206 | + <ua:String>http://opcfoundation.org/UA-Profile/Server/StandardUA2017</ua:String> |
| 207 | + <ua:String>http://opcfoundation.org/UA-Profile/Server/DataAccess</ua:String> |
| 208 | + <ua:String>http://opcfoundation.org/UA-Profile/Server/Methods</ua:String> |
| 209 | + <ua:String>http://opcfoundation.org/UA-Profile/Server/ReverseConnect</ua:String> |
| 210 | + <ua:String>http://opcfoundation.org/UA-Profile/Server/ClientRedundancy</ua:String> |
| 211 | + </ServerProfileArray> |
| 212 | +</ServerConfiguration> |
| 213 | +``` |
| 214 | + |
| 215 | +### Security Policy Configuration |
| 216 | + |
| 217 | +Security policies are configured in the `SecurityPolicies` section: |
| 218 | + |
| 219 | +```xml |
| 220 | +<SecurityPolicies> |
| 221 | + <ServerSecurityPolicy> |
| 222 | + <SecurityMode>SignAndEncrypt_3</SecurityMode> |
| 223 | + <SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</SecurityPolicyUri> |
| 224 | + </ServerSecurityPolicy> |
| 225 | + <ServerSecurityPolicy> |
| 226 | + <SecurityMode>SignAndEncrypt_3</SecurityMode> |
| 227 | + <SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep</SecurityPolicyUri> |
| 228 | + </ServerSecurityPolicy> |
| 229 | + <!-- ECC Security Policies --> |
| 230 | + <ServerSecurityPolicy> |
| 231 | + <SecurityMode>SignAndEncrypt_3</SecurityMode> |
| 232 | + <SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP256</SecurityPolicyUri> |
| 233 | + </ServerSecurityPolicy> |
| 234 | +</SecurityPolicies> |
| 235 | +``` |
| 236 | + |
| 237 | +See the [Reference Server configuration file](../Applications/ConsoleReferenceServer/Quickstarts.ReferenceServer.Config.xml) for a complete example. |
| 238 | + |
| 239 | +## Related Documentation |
| 240 | + |
| 241 | +- [ECC Profiles](EccProfiles.md) - Detailed information about ECC certificate and security policy support |
| 242 | +- [Certificates](Certificates.md) - Certificate management and storage |
| 243 | +- [Reverse Connect](ReverseConnect.md) - Reverse connection configuration and usage |
| 244 | +- [Transfer Subscriptions](TransferSubscription.md) - Subscription transfer between servers |
| 245 | +- [Durable Subscriptions](DurableSubscription.md) - Persistent subscriptions across reconnections |
| 246 | +- [Complex Types](ComplexTypes.md) - Custom structures and enumerations |
| 247 | +- [Role-Based User Management](RoleBasedUserManagement.md) - Role-based access control |
| 248 | +- [PubSub](PubSub.md) - Publisher-Subscriber pattern implementation |
| 249 | +- [Async Server Support](AsyncServerSupport.md) - Asynchronous node manager implementation |
| 250 | + |
| 251 | +## References |
| 252 | + |
| 253 | +- [OPC Foundation Profile Reporting](https://profiles.opcfoundation.org/) |
| 254 | +- [OPC UA Specification](https://reference.opcfoundation.org/) |
| 255 | +- [OPC UA Compliance Test Tool (CTT)](https://opcfoundation.org/developer-tools/certification-test-tools/opc-ua-compliance-test-tool-uactt/) |
0 commit comments