Federation over JFrog Bridge
Synchronize Federated repositories between SaaS and self-managed JPDs through JFrog Bridge.
Federated Repositories with JFrog Bridge enables secure, encrypted communication between JFrog Platform environments without complex networking requirements. This lets Repository Federation work seamlessly between SaaS and self-managed Artifactory environments, without VPN or public exposure.
It operates transparently within the JFrog Platform, allowing platform services to communicate with services running on another environment over a private channel. It doesn't require inbound network access, public exposure, or complex VPN configurations.
Early adopter feature
Federation over Bridge is in early adopter stage. Self-hosted support is available starting with Artifactory 7.133.13, bundling RTFS 1.15.13, rolling out from 16 March 2026. If you're on a JFrog SaaS environment, contact JFrog Support to verify that Bridge is enabled for your environment.
Prerequisites
Before you begin, ensure you have a Bridge configured between your environments. For instructions on setting up a Bridge, see Add a JFrog Bridge.
Environment requirements:
- You must have Bridge installed and configured. You should receive a Bridge URL such as
http://localhost:8046/bridge-<Bridge_ID>that will be used as a federation Base URL to the self-managed environment. - SaaS environment: As Federation over Bridge is in early adopter stage, contact JFrog Support to verify that Bridge is enabled on your SaaS environment.
- Self-managed environment:
- RTFS enabled with both Bridge feature flags:
artifactory.rtfs.bridge.url.enabled: Set in Artifactorysystem.yamlrtfs.bridge.url.enabled: Set in RTFSsystem.yaml
- Artifactory version 7.133.13 or higher (bundling RTFS 1.15.13)
- Federated Base URL configured to point to the Bridge endpoint
- RTFS enabled with both Bridge feature flags:
Access requirements:
- Admin access to both the SaaS and self-managed environments
kubectlor SSH access to the self-managed cluster- A Bridge-compatible pairing token (see Service Trust Pairing for creation instructions)
Setup Guide
Before you begin, ensure all prerequisites are met and your Bridge is configured.
Step 1: Configure Federated Base URL
Point the Federation Base URL to the Bridge endpoint so the self-managed and SaaS environments can communicate through Bridge.
On self-managed:
To configure the Federated Base URL:
-
Set the Federation base URL to point to the Bridge endpoint. For more information, see Change the Base URL in Federated Repositories.
http://localhost:8046/bridge-<Bridge_ID>/artifactoryWhere:
<Bridge_ID>: The identifier of the Bridge configured between the environments
Important
Changing the Federated Base URL affects all existing federations on this instance. A self-managed environment configured with a Bridge Federated Base URL can only federate with SaaS. Self-hosted to self-hosted federation over Bridge isn't currently supported and will be revisited in a future release.
Step 2: Pair Environments
Federation requires two-way trust between environments. Complete both of the following bindings.
Binding 1: SaaS to self-managed
To create this binding:
-
Generate a pairing token on SaaS:
curl -u <user>:<password> --location --request POST \ 'https://<saas-url>/artifactory/api/v1/service_trust/pairing/federated-repo/*' \ --data '' -
Import the returned token to the self-managed environment:
curl -u <user>:<password> --location --request PUT \ 'https://<self-managed-url>/artifactory/api/v1/service_trust/pairing/federated-repo/*' \ --header 'Content-Type: application/json' \ --data '{ "pairing_token": "<access-token>" }'Where:
<user>: Your JFrog Platform admin username<password>: Your JFrog Platform admin password<saas-url>: The hostname of your SaaS environment<self-managed-url>: The hostname of your self-managed environment<access-token>: The pairing token returned by the previous command
Binding 2: Self-managed to SaaS
This binding requires accessing the self-managed instance directly.
To create this binding:
-
Access the self-managed instance and generate a pairing token from inside it:
curl -u <user>:<password> -X POST \ "http://localhost:8081/artifactory/api/v1/service_trust/pairing/federated-repo/*" \ -H "X-JFrog-Override-Base-Url: http://localhost:8046/bridge-<Bridge_ID>" \ -H "Accept: application/json" -
Import the returned token to SaaS:
curl -u <user>:<password> --location --request PUT \ 'https://<saas-url>/artifactory/api/v1/service_trust/pairing/federated-repo/*' \ --header 'Content-Type: application/json' \ --data '{ "pairing_token": "<access-token>" }'Where:
<user>: Your JFrog Platform admin username<password>: Your JFrog Platform admin password<Bridge_ID>: The identifier of your configured Bridge<saas-url>: The hostname of your SaaS environment<access-token>: The pairing token returned by the previous command
Step 3: Test Federation
Confirm that Federation over Bridge is working by creating a test repository and syncing an artifact between environments.
To test Federation over Bridge:
-
Create a Federated repository on SaaS.
-
Add a member with the URL:
http://localhost:8046/bridge-<Bridge_ID>/artifactory/<repo-name>Where:
<Bridge_ID>: The identifier of your configured Bridge<repo-name>: The name of the Federated repository you created in step 1
For example:
http://localhost:8046/bridge-prod-01/artifactory/my-federated-repoWhen adding a self-hosted member from the SaaS side, use the URL tab. The Deployments tab isn't supported for Bridge members. Adding a SaaS member from the self-hosted side is a regular flow and doesn't require any Bridge-specific steps.
-
Upload an artifact to the SaaS repository.
-
Verify the artifact appears on the self-managed repository.
Verification
Success Indicators
- Bridge endpoint responds to ping.
- Pairing completes without errors.
- Artifacts sync between environments.
- No 400 or 404 errors on federation operations.
Health Check Commands
Check Bridge status (SaaS):
curl https://<saas-url>/bridge-<Bridge_ID>/access/api/v1/system/pingCheck Federation status and repository sync (SaaS):
curl -u admin:password https://<saas-url>/artifactory/api/federation/status
curl -u admin:password https://<saas-url>/artifactory/api/repositories/<repo-name>Troubleshooting
Common Issues
The following table lists common issues, their causes, and their solutions.
| Issue | Symptoms | Cause | Solution |
|---|---|---|---|
| "Adding members from same host is not allowed" | Error appears when adding members from the same host | Bridge feature flags aren't enabled | Enable artifactory.rtfs.bridge.url.enabled (Artifactory) and rtfs.bridge.url.enabled (RTFS), then retry. |
| "Federated service is not fully operational yet" | 400 error when accessing Bridge endpoint | RTFS still initializing | Wait 5–10 minutes, then retry. |
| 404 on Bridge endpoint | Bridge endpoint returns 404 Not Found | Feature flags not enabled or incorrect URL format | Verify feature flags are enabled on both Artifactory and RTFS, and check the URL format includes /bridge-<Bridge_ID>/. |
| Pairing fails with token exception | Token validation error during pairing | Known issue with RTFS-to-RTFS pairing | Follow the pairing process in Step 2 above and verify both directions are completed. |
| Artifacts not syncing | Files uploaded to one side don't appear on the other | Federation not properly configured or connection issues | Verify pairing completed successfully, check the federation member URL uses the correct Bridge prefix, review logs for connection errors, and verify base URLs are configured correctly. |
Debug Checklist
Run through this checklist if you're experiencing issues.
- Feature flags enabled on SaaS (
artifactory.rtfs.bridge.url.enabled) - RTFS enabled on self-managed (
rtfs.enabled: true) - Base URLs configured correctly on both sides
- Federation base URL includes Bridge prefix
- Pairing tokens generated and imported successfully
- Network connectivity exists (port 443)
- Pods are running and healthy
Verify Configuration Format in system.yaml
A common mistake is setting the feature flag value as a quoted string instead of a boolean.
Incorrect:
rtfs:
bridge:
url:
enabled: 'true'Correct:
rtfs:
bridge:
url:
enabled: trueAfter restart, confirm the parameter appears as a boolean in startup logs:
rtfs.bridge.url.enabled = trueA quoted 'true' may not be interpreted as a boolean, leaving the feature effectively disabled.
Enable TRACE Logging
If federation using Bridge URLs is failing, enable TRACE logging to see how URLs are detected and processed.
RTFS: Edit logback.xml (/opt/jfrog/federation/var/etc/rtfs/logback.xml), adding before </configuration>:
<logger name="org.jfrog.rtfs.common.utils.BridgeUrlProcessor" level="TRACE"/>
<logger name="org.jfrog.rtfs.common.utils.HttpUtils" level="TRACE"/>Artifactory: Edit logback.xml:
<logger name="org.artifactory.addon.federated.utils.BridgeUrlProcessor" level="TRACE"/>
<logger name="org.artifactory.addon.federated" level="DEBUG"/>After enabling TRACE, reproduce the issue and search logs:
grep -E "(BridgeUrlProcessor|Detected bridge URL|processed)" /opt/jfrog/federation/var/log/artifactory-federation-service.logExpected RTFS output:
TRACE BridgeUrlProcessor - Detected bridge URL pattern, Input remoteUrl: http://localhost:8046/bridge-xyz/artifactory/my-repo
TRACE BridgeUrlProcessor - Bridge URL with /artifactory processed - returning: http://localhost:8046/bridge-xyz/artifactoryExpected Artifactory output:
TRACE BridgeUrlProcessor - Detected bridge URL pattern, Input remoteUrl: http://localhost:8046/bridge-xyz/artifactory/my-repo
TRACE BridgeUrlProcessor - Bridge URL with /artifactory processed - removed /artifactory, returning: http://localhost:8046/bridge-xyzCollect Information for Support
When opening a support ticket, include:
rtfs.bridge.url.enabledvalue from startup logs (Artifactory and RTFS)- Relevant
system.yamlsections - RTFS and Artifactory logs with TRACE enabled (filtered for
BridgeUrlProcessor) - Repository name, Bridge URL being used, and full error message
Performance Considerations
Federation over Bridge introduces additional network hops compared to direct federation. Expect higher latency and lower throughput, particularly for large-scale artifact synchronization or high-frequency metadata operations. The degree of impact depends on the network distance between environments and artifact sizes.
If you experience slow federation or timeouts:
- Check connection pool size: Verify the Bridge client has sufficient connections.
- Monitor network latency: High latency between environments directly impacts sync times.
- Review artifact sizes: Very large artifacts may require timeout adjustments.
- Check resource allocation: Ensure pods have adequate CPU and memory.
- Test with your workload: Validate performance against your expected usage patterns before production rollout.
API Reference
Pairing Endpoints
Create pairing token:
POST /artifactory/api/v1/service_trust/pairing/federated-repo/*
Authorization: Bearer <token>Register pairing token:
PUT /artifactory/api/v1/service_trust/pairing/federated-repo/*
Content-Type: application/json
Authorization: Bearer <token>
{
"pairing_token": "<pairing-token>"
}Federation Status
Check Federation status:
GET /artifactory/api/federation/status
Authorization: Bearer <token>List Federation members:
GET /artifactory/api/repositories/<repo-name>
Authorization: Bearer <token>Configuration Reference
Base URL Format
Self-managed Federation Base URL:
http://localhost:8046/bridge-<Bridge_ID>/artifactorySaaS Base URL:
https://<your-instance>.jfrogdev.org/artifactoryBridge URL Format
For SaaS to self-managed communication:
http://localhost:8046/bridge-<Bridge_ID>/artifactory/<repo-name>Frequently Asked Questions
This section provides answers to frequently asked questions.
FAQs
Q: Do I need to configure anything on my firewall?
A: For firewall and network requirements, see Manage JFrog Bridges.
Q: What's the performance impact of using Bridge?
A: Federation over Bridge adds network overhead compared to direct federation, with higher latency for large artifacts or high-frequency sync operations. See Performance Considerations for tuning steps if you experience slow federation or timeouts.
Q: What happens if the Bridge connection drops?
A: Federation operations fail until the connection is restored. For details on Bridge reconnection behavior, see Manage JFrog Bridges.
For general Bridge questions (architecture, installation, VPN comparison), see Manage JFrog Bridges.
Related Topics
Updated about 7 hours ago
