Skip to content

Publishers

Restricting destinations

Dependency-Track only connects to publisher destinations that dt.outbound.allowed-destinations allows.

Changed in 5.2.0

Before 5.2.0, the email and Kafka publishers used their own properties. To allow local connections, set:

  • dt.notification-publisher.email.allow-local-connections=true
  • dt.notification-publisher.kafka.allow-local-connections=true

See Upgrading to v5.2.0.

Console

Publishes notifications by writing them to standard output.

This publisher targets testing scenarios. It exposes no configuration options.

Email

Publishes notifications as emails. The publisher supports the SMTP and SMTPS protocols.

Global Config

The global configuration defines how Dependency-Track connects to your email server.

email publisher global config

Alert Config

The alert configuration defines the recipients of email notifications, along with an optional subject prefix.

email publisher alert config

Beyond listing recipient addresses explicitly, you can also name one or more teams as recipients. When you name teams, the publisher delivers emails to every member of those teams.

You can mix explicit recipient addresses and teams, but you must configure at least one of the two.

Jira

Publishes notifications by creating issues in an Atlassian Jira instance.

Global Config

The global configuration defines how Dependency-Track connects to your Jira server.

Jira publisher global config

Dependency-Track sends a POST request to {API URL}/rest/api/2/issue when creating an issue.

Depending on your Jira hosting model and authentication setup, configure the fields as follows:

  • Jira Data Center or Jira Server: Set API URL to the base URL of your Jira instance (for example, https://jira.example.com). Specify Username and either a password or personal access token in Password or Token.
  • Jira Cloud (basic authentication): Set API URL to your site URL (for example, https://example.atlassian.net). Set Username to the account email address and Password or Token to an Atlassian API token.
  • Jira Cloud (scoped OAuth 2.0 or API gateway tokens): Set API URL to https://api.atlassian.com/ex/jira/{cloudId} (without a trailing slash), where {cloudId} is your Atlassian Cloud site ID. Leave Username empty and enter the access token in Password or Token. When Username is empty, Dependency-Track sends a Bearer authorization token instead of basic authentication. Ensure the token grants the write:jira-work scope (or the granular write:issue:jira scope).

Alert Config

The alert configuration defines properties of the issues to create.

Jira publisher alert config

Note

Selecting teams as recipients has no effect for this publisher.

Kafka

Publishes notifications by emitting records to an Apache Kafka cluster.

Global Config

The global configuration defines how Dependency-Track connects to your Kafka cluster.

Kafka publisher global config

Configuring TLS

When enabling TLS, you must supply the certificate of the certificate authority (CA) that signed the certificate your Kafka brokers use. The certificate must be in PEM format and must not carry encryption, that is, not password-protected.

Configuring mTLS

When enabling mutual TLS, you must supply a client certificate and key in PEM format. Neither must carry encryption. The client key must be a managed secret.

Default Producer Configs

Dependency-Track applies the following configs to the underlying Kafka producer by default:

Alert Config

The alert config defines the destination and format of Kafka records emitted by the publisher.

Kafka publisher alert config

Note

Selecting teams as recipients has no effect for this publisher.

Protobuf

Publish notifications in Protobuf format whenever possible. Dependency-Track keeps changes to the Protobuf schema backward-compatible, which matters when a durable log like Kafka retains the notifications. See the Notification schema reference to download the .proto file and generate client code.

Templating

The Kafka publisher ships without a default template, since it targets Protobuf. If you prefer a different payload format, configure a custom template first.

Record Keys

If a notification's subject is a project (as for groups like BOM_CONSUMED, NEW_VULNERABILITY etc.), the Kafka record key holds the project's UUID. If the notification's subject is not a project, the key is null.

Mattermost

Publishes notifications as Mattermost messages.

Alert Config

The alert config defines the destination of Mattermost messages.

This should be the URL of an incoming Webhook.

Note

Selecting teams as recipients has no effect for this publisher.

Microsoft Teams

Publishes notifications as Microsoft Teams messages.

Alert Config

The alert config defines the destination of Microsoft Teams messages.

This should be the URL of an incoming Webhook.

Note

Selecting teams as recipients has no effect for this publisher.

Slack

Publishes notifications as Slack messages.

Alert Config

The alert config defines the destination of Microsoft Teams messages.

This should be the URL of an incoming Webhook.

Note

Selecting teams as recipients has no effect for this publisher.

Webex

Publishes notifications as Cisco Webex messages.

Alert Config

The alert config defines the destination of Microsoft Teams messages.

This should be the URL of an incoming Webhook.

Note

Selecting teams as recipients has no effect for this publisher.

Webhook

Publishes notifications as Webhooks.

Alert Config

The alert config defines the destination of webhook requests, and optionally how to authenticate and sign them.

Webhook publisher alert config

Note

Selecting teams as recipients has no effect for this publisher.

Signature

Available in 5.2.0 and later

Earlier versions send webhook requests unsigned.

When the alert config names a signing secret, each request carries an X-Webhook-Signature header. The signing secret must be a managed secret.

The header value is sha256= followed by the lowercase hex-encoded HMAC-SHA256 of the request body, keyed with the UTF-8 bytes of the secret. The publisher computes it over the exact bytes it sends, whether it renders a template or publishes Protobuf.

To verify a request, compute the same HMAC over the raw request body, before parsing it, and compare it to the header value in constant time.