Outgoing connections security

Authenticate outgoing REST, SOAP and other connections with the type the remote system expects.

Zato services call external systems through outgoing connections - REST, SOAP, GraphQL, IMAP, SQL, ElasticSearch and the other connection types. Each connection pairs the address that it calls with the credentials that the remote system expects, so authentication is part of the connection's definition, not of your code.

A single security definition may cover any number of outgoing connections, and changes to connections or definitions take effect without restarts.

Use security definitions

You create a security definition first, under the Security menu in the Dashboard, and assign it when you create or edit an outgoing connection of the matching type:

Choose a security type

An outgoing connection proves who Zato is to the remote system, so pick the type that the system expects:

TypeWhat Zato sendsUse it when
Basic AuthA username and password in the Authorization headerThe remote system issued you credentials
API keyA key in a header, X-API-Key by defaultThe remote system issued you a key
Bearer tokenAn OAuth 2.0 bearer tokenThe remote system speaks OAuth 2.0
mTLSA client certificateThe remote system authenticates callers by certificate - see mTLS
NTLMNTLM credentials, usually DOMAIN\userThe remote system is a Windows service expecting NTLM
Kerberos (SPNEGO)A Kerberos ticket from a keytabThe remote system is on a Kerberos realm - see Kerberos

NTLM and Kerberos are outgoing-only - they authenticate Zato to a remote system and cannot secure a channel.

Not every connection type takes every security type:

Connection typeBasic AuthAPI keyBearer tokenmTLSNTLMKerberos
RESTYesYesYesYesYesYes
SOAPYesYesYesYesYesYes
HL7 FHIRYes-Yes---
GraphQLYesYesYes---

The remaining outgoing types - SQL, IMAP, SMTP, LDAP, SFTP, MongoDB, Odoo and the other connection-specific types - do not use security definitions at all. Each has its own credentials, a username and password entered on the connection itself - you change the password through the connection's Change password action.

Timeouts and retries

Set a timeout on every outgoing connection, so that a remote system that stops responding does not become your own outage. A connection with retries configured retries its health check too, so a long retry policy delays the moment the health check reports a failure.

Automation with enmasse

Once the connections work, export them with enmasse - the YAML holds the definitions and connections without any passwords, and importing it from the command line recreates the setup in any environment.

See also

PageWhat it covers
Channel securityAuthenticating the callers of your own APIs
mTLSClient certificates on both channels and outgoing connections
Health checksHow retries on a connection delay failure reports

Learn more