> For the complete documentation index, see [llms.txt](https://docs.balkan.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.balkan.id/getting-started/setting-up-your-tenant/application-integrations/direct-application-integrations/jfrog-integration-setup.md).

# JFrog Integration Setup

### Getting Started

Use this guide to connect JFrog to your BalkanID tenant. BalkanID reads your JFrog users, groups and repositories, and the permissions that connect them, so you can review who can reach which repository and how.

You will need an access token from the JFrog Platform and access to the **Integrations** section in BalkanID.

{% hint style="info" %}
Generate an **access token**, not a JFrog API key. JFrog API keys reached end of life at the end of 2024 and can no longer be created, so they will not work here. The BalkanID field is labelled **API Key** for consistency with other integrations, but the value it expects is an access token.
{% endhint %}

#### Requirements:

Before you begin, collect the following values from JFrog:

* **API Key**
* **Base URL**

### Configure JFrog within your BalkanID tenant

1. To find the **API Key** and **Base URL**, sign in to your JFrog Platform as an administrator.
2. Navigate to **Platform Configurations** > **User Management** > **Access Tokens**, then select **Generate Token**.
3. Set the token's scope to cover identities, permissions and repositories (see [Integration Scopes](#integration-scopes) below), then generate it. Copy the token immediately — JFrog shows it only once. This value is your **API Key**.
4. Your **Base URL** is the address of your JFrog Platform instance. For a cloud instance this is `https://<your-instance>.jfrog.io`. For a self-hosted instance, use `http://<your-platform-host>:<router-port>`, where the router port is `8082` by default. You can copy it from your browser's address bar while signed in to JFrog; anything after the host is ignored.
5. In BalkanID, go to **Configure** > **Integrations** and select **Add integration**.

<div data-with-frame="true"><figure><img src="https://2975852473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbVGYwk8aSk5yI1GDPEW9%2Fuploads%2FSGD3ViDT5XH1wOEBQJM3%2Fjfrog-add-integration.png?alt=media" alt="The BalkanID Integrations page with the Add integration button in the top right"><figcaption><p>Add integration</p></figcaption></figure></div>

6. Search for **JFrog**, select the application, then click **Next**.

<div data-with-frame="true"><figure><img src="https://2975852473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbVGYwk8aSk5yI1GDPEW9%2Fuploads%2FIMkdzx65HspZc8Okzs1O%2Fjfrog-connect-application.png?alt=media" alt="The Connect a new application step with JFrog found in the application search"><figcaption><p>Connect a new application</p></figcaption></figure></div>

7. Under **Select Extraction Type**, keep **Direct Configuration** selected and paste your values into **API Key** and **Base URL**, then click **Next**.

<div data-with-frame="true"><figure><img src="https://2975852473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbVGYwk8aSk5yI1GDPEW9%2Fuploads%2Fp1zJcWgPqLBEeA9K4Q0A%2Fjfrog-direct-configuration.png?alt=media" alt="The Direct Configuration step showing the API Key and Base URL fields"><figcaption><p>Direct Configuration</p></figcaption></figure></div>

8. Fill **Optional Configuration**, if required.

<div data-with-frame="true"><figure><img src="https://2975852473-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbVGYwk8aSk5yI1GDPEW9%2Fuploads%2FZbipc8nl8LTFl5YsVIaj%2Foptional-configuration.png?alt=media" alt="The Optional Configuration step of the integration wizard"><figcaption><p>Optional Configuration</p></figcaption></figure></div>

9. Once you have filled in the information, click **Save**. Your integration is now configured and you will see the status of the integration displayed alongside other integrations on the Integrations page. When data is available, the integration Status column will read **Connected** and the integration Message will read **Data available**.

### Integration Scopes

An administrator token works, but a scoped token with only the permissions below is enough.

| Read Only Scopes                                                                                                  | Lifecycle Management Scopes |
| ----------------------------------------------------------------------------------------------------------------- | --------------------------- |
| **Identities (Read)** — `system:identities:r`, used to read users and groups and their membership                 | N/A                         |
| **Permissions (Read)** — `system:permissions:r`, used to read which users and groups can reach which repositories | N/A                         |
| **Artifacts (Read)** — `artifact:*:r`, used to read the repository inventory                                      | N/A                         |

### Requirements and limitations

* Your JFrog Platform must be running Artifactory **7.72.0** or later. Earlier versions do not expose the permissions used to build the access graph.
* BalkanID reads JFrog users, groups and repositories. Build and release bundle permissions are not read.
* JFrog identifies users, groups and permissions by name rather than by a stable ID, so renaming one in JFrog appears in BalkanID as the old item being removed and a new one added.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.balkan.id/getting-started/setting-up-your-tenant/application-integrations/direct-application-integrations/jfrog-integration-setup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
