SAP BTP destinations and the Cloud Connector — what a destination is, proxy types, every authentication type, custom headers and query parameters, how the SAP Cloud SDK finds a destination, how on-premise calls travel through the connectivity service and Cloud Connector, access control, and principal propagation
The plumbing behind most SAP integrations. A BTP destination stores a URL, proxy type (Internet, OnPremise, PrivateLink) and one of 17 authentication types. The SAP Cloud SDK resolves it from the destinations environment variable, then the Destination service. On-premise calls go through the connectivity service to a Cloud Connector, which connects outbound only and exposes just allowlisted hosts and paths. Covers client credentials, principal propagation and failure points.
markdownreferencev162FK-0MWZstage: connecttrust: officialservice: connectivityinterface: restBTP destinationDestination serviceProxyType Internet OnPremise PrivateLinkdestination authentication typesNoAuthenticationBasicAuthenticationClientCertificateAuthenticationPrincipalPropagationOAuth2SAMLBearerAssertionOAuth2ClientCredentialsOAuth2UserTokenExchangeOAuth2JWTBearerOAuth2TechnicalUserPropagationtokenServiceURLclientIdCloudConnectorLocationIdURL.headersURL.queriessap-client propertydestinations environment variabledestinationName jwtconnectivity service bindingCloud Connector reverse invoke proxyaccess control HTTP RFC TCP LDAPvirtual hostprincipal propagationdestination service REST APITransparent Proxy for Kubernetes
BTP destinations and the Cloud Connector
Destinations
A destination is a named record in a BTP subaccount (or a service instance) that holds:
URL;ProxyType:Internet(the default),OnPremise(through the Cloud Connector) orPrivateLink;Authenticationand its properties.
Code asks for a destination by name, so URLs and secrets stay out of the code.
Authentication value (examples) | Use for |
|---|---|
NoAuthentication | Public endpoints, or the sandbox with an API-key header (below) |
BasicAuthentication | A communication user on S/4HANA Cloud, or a technical user on-premise |
ClientCertificateAuthentication | Certificate-based technical access |
OAuth2ClientCredentials | App-to-app OAuth. Properties: clientId, client secret, tokenServiceURL |
PrincipalPropagation | The signed-in BTP user is mapped to an on-premise user through the Cloud Connector. Properties: ProxyType: OnPremise, optionally CloudConnectorLocationId |
OAuth2SAMLBearerAssertion, OAuth2UserTokenExchange, OAuth2JWTBearer, OAuth2TechnicalUserPropagation, … | User propagation to cloud systems such as S/4HANA Cloud and SuccessFactors |
SAP's destination guide lists 17 authentication types in all, plus client assertions instead of secrets. The hub's reading: start with BasicAuthentication or OAuth2ClientCredentials for a technical integration user, and move to principal propagation when the SAP-side audit must show the real user.
Custom headers and query parameters:
- Add destination properties
URL.headers.<Name>andURL.queries.<Name>, for exampleURL.headers.APIKeyfor the sandbox key, orURL.queries.language = EN. They're sent on every call. - A
sap-clientproperty is sent as thesap-clientheader by the SAP Cloud SDK. - Not every client supports these properties. SAP notes it depends on the consumption method.
Creating destinations:
- in the BTP cockpit (from scratch or from a template);
- on service-instance creation;
- in an MTA descriptor;
- with the Destination service REST API.
How code finds a destination (SAP Cloud SDK)
executeHttpRequest({ destinationName: "S4", jwt }, …):
- looks in the
destinationsenvironment variable, which is handy locally and in tests; - otherwise asks the Destination service of the bound BTP subaccount, using the caller's JWT.
For ProxyType: OnPremise:
- the app needs a connectivity service binding;
- the SDK uses that binding's client credentials to get a token, gets the connectivity proxy's host and authorization, and sends the request through the proxy to the Cloud Connector.
The Cloud Connector
- Runs inside the customer's network as a "reverse invoke proxy". It opens an outbound tunnel to BTP, so no inbound firewall ports open.
- Exposes only allowlisted back-end systems, under a virtual host and port, and only the paths and resources the administrator allows. Access control is configured per protocol: HTTP, RFC, TCP, LDAP.
- Can propagate the cloud user's identity (principal propagation). Variants use the IAS token, OIDC token, corporate IdP or user exchange token, and RFC.
- Recovers connections automatically, audit-logs inbound traffic and configuration changes, and supports high availability.
- One subaccount can connect several Cloud Connectors. They're told apart by location ID (
CloudConnectorLocationIdon the destination).
Where calls fail
| Layer | Typical failure | Check |
|---|---|---|
| Destination lookup | Not found | The name, the subaccount, or the destinations variable locally |
| Token (OAuth types) | 401 from the token service | tokenServiceURL, client ID and secret, the scope for the API |
| Connectivity proxy | No connectivity binding; the location ID doesn't match | The app's service bindings; the Cloud Connector's location ID |
| Cloud Connector | Back end not exposed, or the path isn't allowlisted | The Cloud Connector's access control: virtual host, port, path prefix |
| SAP back end | 401, 403 or 404 from Gateway | The user's roles, the service activation, CSRF (reference/connectivity/odata-calls-csrf-and-errors.md) |