mirror of
https://github.com/OPCFoundation/UA-.NETStandard.git
synced 2026-10-28 14:09:56 +08:00
The WSS transport constants used the unregistered uawss- prefix for the UA-SecureConversation/UA-Binary and UA-JSON profiles. Use the profile URIs registered by the OPC Foundation: https://profiles.opcfoundation.org/profile/254 https://profiles.opcfoundation.org/profile/253 The WebSocket mappings and sub-protocols are specified in OPC UA Part 6 section 7.5.2: https://reference.opcfoundation.org/Core/Part6/v105/docs/7.5.2 Update the transport-profile helpers, regression tests, and documentation accordingly so endpoint discovery publishes identifiers recognized by conforming OPC UA clients and servers. Tests: dotnet test tests/Opc.Ua.Core.Tests/Opc.Ua.Core.Tests.csproj -f net10.0 --filter FullyQualifiedName~TransportProfileHelpersTests (39 passed) # Description _Describe the changes here to communicate to the maintainers why they should accept this pull request. By default - this will become the Commit message after merging and thus define history._ ## Related Issues _Reference all GitHub issues this PR addresses. If there is no issue yet, open one and link it here._ _If this is a relatively large or complex change, a design must have been discussed in the related tracking issue and signed off (which becomes the Architectural Decision Record (ADR))._ - Fixes #github-issue-number, ... ## Checklist _Put an `x` in the boxes that apply. You can complete these step by step after opening the PR._ - [x] 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. - [x] I have added all necessary documentation. - [x] I have verified that my changes do not introduce (new) build or analyzer warnings. - [x] 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: Julius Pfrommer <julius.pfrommer@o6-automation.com>
84 lines
3.5 KiB
Markdown
84 lines
3.5 KiB
Markdown
# OPC Foundation UA .NET Standard Reference Client
|
|
|
|
## Introduction
|
|
|
|
The console reference client can be configured using several console parameters.
|
|
Some of these parameters are explained in more detail below.
|
|
|
|
To see all available parameters call console reference client with the parameter `-h`.
|
|
|
|
## Supported transport profiles
|
|
|
|
The client picks the wire transport automatically from the `serverUrl`
|
|
scheme. The OPC UA spec aliases the URL scheme to the
|
|
[`TransportProfileUri`](https://reference.opcfoundation.org/Core/Part6/v107/docs/7.4)
|
|
on the negotiated endpoint:
|
|
|
|
| URL scheme | TransportProfileUri | OPC UA Part 6 reference |
|
|
| --- | --- | --- |
|
|
| `opc.tcp://` | `uatcp-uasc-uabinary` | §7.4.2 |
|
|
| `opc.https://` (or `https://`) with binary body | `https-uabinary` | §7.4.4 |
|
|
| `opc.https://` (or `https://`) with `application/opcua+uajson` body | `https-uajson` | §7.4.5 |
|
|
| `opc.wss://` (or `wss://`) with `opcua+uacp` sub-protocol | `wss-uasc-uabinary` | §7.5.2 |
|
|
| `opc.wss://` (or `wss://`) with `opcua+uajson` sub-protocol | `wss-uajson` | §7.5.2 |
|
|
|
|
Examples:
|
|
|
|
```bash
|
|
# UA-TCP (default)
|
|
dotnet ConsoleReferenceClient.dll opc.tcp://localhost:62541/Quickstarts/ReferenceServer
|
|
|
|
# WSS+uacp (binary UA SecureChannel over TLS WebSocket)
|
|
dotnet ConsoleReferenceClient.dll opc.wss://localhost:62543/Quickstarts/ReferenceServer
|
|
|
|
# HTTPS (binary)
|
|
dotnet ConsoleReferenceClient.dll opc.https://localhost:62543/Quickstarts/ReferenceServer
|
|
```
|
|
|
|
The reference server (`ConsoleReferenceServer`) advertises the
|
|
`opc.tcp://`, `opc.https://` and `opc.wss://` endpoints by default; see
|
|
[`docs/Transports.md`](../../docs/Transports.md) for the full server
|
|
configuration story (TLS certificates, mutual TLS, JSON sub-protocol
|
|
restrictions, etc.).
|
|
|
|
## Reverse Connect
|
|
|
|
The OPC UA reverse connect feature allows an OPC UA server to initiate the connection to a client, rather than the traditional model where clients connect to servers. This is particularly useful in scenarios where the server is behind a firewall or NAT, making it difficult for clients to directly connect to it.
|
|
|
|
### How to use Reverse Connect
|
|
|
|
To enable reverse connect mode, specify the client endpoint URL using the `--rc` or `--reverseconnect` parameter:
|
|
|
|
```bash
|
|
dotnet ConsoleReferenceClient.dll --rc=opc.tcp://localhost:65300 opc.tcp://localhost:62541/Quickstarts/ReferenceServer
|
|
```
|
|
|
|
The client will start a reverse connect listener on the specified endpoint (e.g., `opc.tcp://localhost:65300`) and wait for the server to connect to it.
|
|
|
|
### Example: Client and Server with Reverse Connect
|
|
|
|
1. Start the client with reverse connect listener on port 65300:
|
|
```bash
|
|
dotnet ConsoleReferenceClient.dll --rc=opc.tcp://localhost:65300 opc.tcp://localhost:62541/Quickstarts/ReferenceServer
|
|
```
|
|
|
|
2. In a separate terminal, start the server with reverse connect to the client:
|
|
```bash
|
|
dotnet ConsoleReferenceServer.dll --rc=opc.tcp://localhost:65300 -a
|
|
```
|
|
|
|
The server will establish a reverse connection to the client endpoint, and the client will use this connection to communicate with the server.
|
|
|
|
### How to specify User Identity
|
|
#### Username & Password
|
|
Specify as console parameters:
|
|
`-un YourUsername`
|
|
`-up YourPassword`
|
|
|
|
#### Certificate
|
|
Place your user certificate in the TrustedUserCertificatesStore (the path can be found in the client configuration XML). Make sure to include an accessible private key with the certificate.
|
|
Specify console parameters:
|
|
`-uc Thumbprint` (of the user certificate to select)
|
|
`-ucp Password` (of the user certificates private key (optional))
|
|
|