Glossary · Connection

EndpointDescription

An EndpointDescription is the structure GetEndpoints returns for each endpoint. It carries EndpointUrl, the server's ApplicationDescription, the server certificate, SecurityMode, SecurityPolicyUri, the accepted UserIdentityTokens, the TransportProfileUri and a SecurityLevel hint. Everything a client needs to decide how to connect is in this one structure.

The fields that decide the connection

SecurityPolicyUri and SecurityMode define the cryptography. UserIdentityTokens lists the token types the endpoint will accept, each with its own PolicyId that you must echo back in ActivateSession. TransportProfileUri says which wire mapping applies, which matters as soon as HTTPS or WebSocket endpoints appear. ServerCertificate is the DER-encoded application instance certificate you will validate and, on first contact, decide to trust.

The server certificate arrives here

This is where a client first sees the server's certificate, before any secure channel exists. That is why the discovery call is normally made with security None: it is a bootstrap. Your client checks the certificate against its trust list, and on failure copies it to the rejected store so an operator can promote it. It is also where ApplicationUri and the certificate SAN are cross-checked, producing BadCertificateUriInvalid on a mismatch.

SecurityLevel is a hint, not a ranking you should trust

SecurityLevel is a relative number the server assigns to indicate which of its own endpoints it considers more secure. It is comparable only within one server, servers assign it inconsistently, and a client that just picks the highest number can still land on something you did not intend. Pick the policy and mode your site standard requires and treat SecurityLevel as informational.

Example

One decoded EndpointDescription

EndpointUrl        opc.tcp://plc01.plant.local:4840/UA/Server
Server
  ApplicationUri   urn:plc01:Vendor:UAServer
  ProductUri       http://vendor.example/UAServer
  ApplicationType  Server
ServerCertificate  <DER, 1180 bytes>  SAN: URI:urn:plc01:Vendor:UAServer, DNS:plc01.plant.local
SecurityMode       SignAndEncrypt
SecurityPolicyUri  http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256
UserIdentityTokens [ {PolicyId: "username_basic256sha256", TokenType: UserName} ]
TransportProfileUri http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary
SecurityLevel      3
The mistake people make: Reconnecting to EndpointUrl instead of the URL you actually dialled. The server returns its own configured hostname, so a client that connects by IP, gets back an internal FQDN and then re-dials that FQDN fails with a name-resolution error or BadCertificateHostNameInvalid - while the original connection was fine.

Defined in: Part 4 - Services, GetEndpoints and the EndpointDescription structure.

Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.

Free download
OPC UA Server Acceptance Test Pack
A 40-check acceptance test you run against a vendor's server before commissioning sign-off. Weighted scoring, three hard gates, and a one-page verdict for the supplier meeting.
Get the free test pack →
Free, no course, no login