Files
Copilot 43a8358eac Update Profiles.md to document v2 improvements and new security profiles (#3832)
The Profiles.md documentation was outdated and did not accurately
reflect the significant improvements and new features added in v2, as
well as containing an inaccuracy regarding server-side aggregate
support. This PR updates the document to provide an accurate and
comprehensive profile of current functionality.

## Changes Made

- **Overview**: Updated to highlight v2 improvements and clarified OPC
UA specification version to 1.05.07
- **Server Features**: Added three new Additional Features sections
documenting:
  - Alias Names (OPC UA Part 17) with wildcard search
  - WoT Connectivity (OPC 10100-1) for IoT asset integration
  - Model Change Tracking for address space change notifications
- Added reference to fluent API and dependency injection patterns for
feature configuration
- **Client Enhancements**: Expanded Client Profiles section with new
capabilities:
- Streaming Subscriptions integrated into subscription management
(IAsyncEnumerable-based API)
  - Model Change Tracking (address space invalidation)
  - File System Operations (System.IO-style async client)
  - Alarms and Conditions (full subscription support)
- **Security Profiles**: Significantly expanded security policy
documentation to include v2.0 additions:
  - Modern ECC Curves: Curve25519 and Curve448 with AEAD ciphers
  - AES-GCM and ChaCha20-Poly1305 variants for traditional ECC curves
  - RSA Diffie-Hellman key agreement policies
  - Updated platform requirements to reflect modern cipher support needs
- **GDS Expansion**: Added Authorization Service and Key Credential
Service to GDS section for token and credential issuance
- **Restructuring**: Removed "Currently Not Supported (Server)" section
to provide clearer distinction between fully implemented features and
those with limited coverage, and integrated streaming subscriptions as a
subscription management capability rather than a separate profile
- **Documentation**: Added 8 new entries to Related Documentation
linking to comprehensive guides for all v2 features
- **Aggregate Correction**: Corrected the inaccurate claim that
server-side aggregates are not implemented. Server-side aggregates
(Average, Total, Minimum, Maximum, and more) are fully implemented via
streaming fallback and provider push-down. Removed "Aggregates Server
Facet" from the "Currently Not Supported" section.

## Related Issues

## Checklist

- [ ] I have signed the
[CLA](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf)
and read the
[CONTRIBUTING](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/CONTRIBUTING.md)
doc.
- [ ] I have added tests that prove my fix is effective or that my
feature works and increased code coverage.
- [ ] I have added all necessary documentation.
- [ ] I have verified that my changes do not introduce (new) build or
analyzer warnings.
- [ ] I ran **all** tests locally using the **UA.slnx** solution against
at least .net **framework** and .net **10**, and all passed.
- [ ] I fixed **all** failing and flaky tests in the CI pipelines and
**all** CodeQL warnings.
- [ ] I have addressed **all** PR feedback received.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-06-03 12:43:28 +02:00

16 KiB

OPC UA Profiles and Facets Support

This document describes which OPC UA Profiles and Facets are implemented in the OPC UA .NET Standard Stack.

Overview

The OPC UA .NET Standard Stack v2 is a reference implementation that targets OPC UA specification version 1.05.07. The stack 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).

Version 2.0 includes significant improvements and new features for address space management, security, and integration scenarios, including Alias Names (Part 17), WoT Connectivity (OPC 10100-1), Key Credential Service and Authorization Service (Part 12), Model Change Tracking, and enhanced client APIs for streaming subscriptions and file system operations.

For a complete list of all OPC UA profiles, visit the OPC Foundation Profile Reporting website.

Server Profiles

The Reference Server implementation supports the following OPC UA Server profiles:

Core Server Profiles

  • Standard UA Server Profile (2017) - The core OPC UA Server profile that includes:
    • Basic server capabilities
    • Discovery services
    • Session management
    • Subscription management
    • MonitoredItem services
    • View services (Browse, BrowseNext, TranslateBrowsePathsToNodeIds)
    • Attribute services (Read, Write, HistoryRead, HistoryUpdate)
    • Query services

Functional Facets

Additional Features

The server implementation also provides support for:

These features are configured and registered using the fluent API and dependency injection patterns (see individual feature documentation for examples).

Client Profiles

The Client implementation supports:

  • Standard UA Client Profile - Full client functionality for connecting to OPC UA servers
  • Subscription management - Creating and managing subscriptions and monitored items, including streaming subscriptions with async enumerable-based API for state-machine waits and short-lived monitoring (see Streaming Subscriptions documentation)
  • Transfer Subscriptions - Support for transferring subscriptions between servers (see Transfer Subscriptions documentation)
  • Reverse Connect - Client can accept connections initiated by servers (see Reverse Connect documentation)
  • Model Change Tracking - Track address space changes and invalidate cached nodes (see Model Change Tracking documentation)
  • File System Operations - Ergonomic async API for remote OPC UA file system operations, mirroring System.IO semantics (see FileSystemClient documentation)
  • Alarms and Conditions - Client-side support for subscribing to and processing OPC UA alarms and condition events provided by the server, with typed event records and filtering (see Alarms and Conditions documentation)

Transport Profiles

The stack implements the following transport profiles:

Client and Server Transport Support

  • UA TCP Transport (opc.tcp://) - The primary OPC UA binary transport protocol over TCP

    • Full support for UA Secure Conversation (UASC)
    • Binary encoding
    • Reverse connect capability
  • HTTPS Binary Transport (opc.https:// and https://) - OPC UA binary protocol over HTTPS

    • Binary encoding over HTTPS
    • TLS/SSL encryption

PubSub Transport Support

The PubSub library supports the following transport profiles:

Currently Not Supported (Transport)

  • WebSocket Transport (opc.wss://) - UA WebSocket Secure (WSS) transport is not currently supported
  • HTTPS JSON Transport - JSON encoding over HTTPS is not currently supported

Security Profiles

The stack supports the following OPC UA security profiles for secure communication:

RSA-Based Security Policies

  • Basic256Sha256 - RSA encryption with SHA-256

    • 256-bit AES encryption
    • RSA-OAEP for key encryption
    • HMAC-SHA256 for message authentication
    • Minimum key size: 2048 bits
  • Aes128_Sha256_RsaOaep - 128-bit AES with SHA-256

    • 128-bit AES encryption
    • RSA-OAEP for key encryption
    • HMAC-SHA256 for message authentication
  • Aes256_Sha256_RsaPss - 256-bit AES with RSA-PSS signatures

    • 256-bit AES encryption
    • RSA-PSS signatures
    • HMAC-SHA256 for message authentication

ECC-Based Security Policies

Support for Elliptic Curve Cryptography (ECC) security policies (see ECC Profiles documentation):

Traditional ECC Curves

Modern ECC Curves (v2.0)

AES-GCM and ChaCha20-Poly1305 Variants (v2.0)

Modern AEAD cipher alternatives for traditional ECC curves:

  • ECC_nistP256_AesGcm, ECC_nistP256_ChaChaPoly
  • ECC_nistP384_AesGcm, ECC_nistP384_ChaChaPoly
  • ECC_brainpoolP256r1_AesGcm, ECC_brainpoolP256r1_ChaChaPoly
  • ECC_brainpoolP384r1_AesGcm, ECC_brainpoolP384r1_ChaChaPoly

RSA Diffie-Hellman (v2.0)

  • RSA_DH_AesGcm - RSA Diffie-Hellman key agreement with AES-GCM
  • RSA_DH_ChaChaPoly - RSA Diffie-Hellman key agreement with ChaCha20-Poly1305

Platform Requirements for ECC: ECC support is available on .NET Framework 4.8, .NET Standard 2.1, and .NET 5.0 or later. Modern curves (Curve25519, Curve448) and AEAD ciphers (AES-GCM, ChaCha20-Poly1305) require .NET 5.0 or later. Not all curves are supported by all OS platforms and .NET implementations.

Deprecated Security Policies

The following security policies are deprecated but still supported for backward compatibility:

Note: SHA-1 signed certificates are rejected by default (RejectSHA1SignedCertificates configuration option). These deprecated policies should only be enabled for compatibility with legacy systems.

Security Policy None

  • None - No security
    • Should only be used for testing or on isolated networks
    • Not recommended for production environments

User Authentication

The stack supports the following user authentication mechanisms:

  • Anonymous - No user authentication
  • Username/Password - User credentials encrypted using the active security policy
  • X.509 Certificate - User authentication via X.509 certificates

Additional token types:

  • JWT (JSON Web Tokens) - Support for issued tokens complying with JWT specification

Certificate Types

The stack supports the following certificate types for application authentication:

RSA Certificates

  • RsaSha256ApplicationCertificateType - RSA certificates with SHA-256 signatures
    • Default minimum key size: 2048 bits
    • Recommended for production use

ECC Certificates

  • EccNistP256ApplicationCertificateType - ECC certificates with NIST P-256 curve
  • EccNistP384ApplicationCertificateType - ECC certificates with NIST P-384 curve
  • EccBrainpoolP256r1ApplicationCertificateType - ECC certificates with Brainpool P-256r1 curve
  • EccBrainpoolP384r1ApplicationCertificateType - ECC certificates with Brainpool P-384r1 curve

See Certificates documentation for more information on certificate management.

Global Discovery Server (GDS)

The stack includes a Global Discovery Server implementation that supports:

  • Application registration and discovery
  • Certificate management
  • Pull and Push certificate management models
  • Support for both RSA and ECC certificate types
  • Certificate revocation lists (CRL)
  • Authorization Service (OPC 10000-12 Part 12 §9) - OAuth2-style access token issuance and management (see AuthorizationService documentation)
  • Key Credential Service (OPC 10000-12 Part 12 §8) - Credential issuance for non-OPC UA services such as MQTT brokers and REST APIs (see KeyCredentialService documentation)

Message Encoding

The stack supports the following message encoding formats:

  • UA Binary - OPC UA binary encoding (primary encoding used for UA-TCP and HTTPS)
  • UADP - UA Data Protocol for PubSub
  • JSON - JSON encoding for PubSub MQTT

Specification Compliance

  • OPC UA Specification: Version 1.05
  • Certification: The Reference Server has been certified for compliance through an OPC Foundation Certification Test Lab
  • Testing: All releases are verified for compliance using the latest Compliance Test Tool (CTT)

Configuration

Server Profile Configuration

Server profiles are configured in the server configuration file using the ServerProfileArray element:

<ServerConfiguration>
  <!-- see https://profiles.opcfoundation.org/ for list of available profiles -->
  <ServerProfileArray>
    <ua:String>http://opcfoundation.org/UA-Profile/Server/StandardUA2017</ua:String>
    <ua:String>http://opcfoundation.org/UA-Profile/Server/DataAccess</ua:String>
    <ua:String>http://opcfoundation.org/UA-Profile/Server/Methods</ua:String>
    <ua:String>http://opcfoundation.org/UA-Profile/Server/ReverseConnect</ua:String>
    <ua:String>http://opcfoundation.org/UA-Profile/Server/ClientRedundancy</ua:String>
  </ServerProfileArray>
</ServerConfiguration>

Security Policy Configuration

Security policies are configured in the SecurityPolicies section:

<SecurityPolicies>
  <ServerSecurityPolicy>
    <SecurityMode>SignAndEncrypt_3</SecurityMode>
    <SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</SecurityPolicyUri>
  </ServerSecurityPolicy>
  <ServerSecurityPolicy>
    <SecurityMode>SignAndEncrypt_3</SecurityMode>
    <SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#Aes128_Sha256_RsaOaep</SecurityPolicyUri>
  </ServerSecurityPolicy>
  <!-- ECC Security Policies -->
  <ServerSecurityPolicy>
    <SecurityMode>SignAndEncrypt_3</SecurityMode>
    <SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP256</SecurityPolicyUri>
  </ServerSecurityPolicy>
</SecurityPolicies>

See the Reference Server configuration file for a complete example.

References