Skip to content

Update JFrog GitHub OIDC setup docs #37596

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 28 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
8c8514c
Update JFrog GitHub OIDC setup docs
EyalDelarea Apr 17, 2025
8aca661
Merge branch 'main' into update_jfrog_docs
EyalDelarea Apr 17, 2025
7c0f732
Remove note section
EyalDelarea Apr 17, 2025
b6e661d
Merge branch 'update_jfrog_docs' of https://github.com/EyalDelarea/do…
EyalDelarea Apr 17, 2025
d295d1a
Merge branch 'main' of https://github.com/github/docs into update_jfr…
EyalDelarea Apr 17, 2025
9c67e23
Fix diff
EyalDelarea Apr 17, 2025
adb9081
CR
EyalDelarea Apr 20, 2025
5152bae
Merge branch 'main' of https://github.com/github/docs into update_jfr…
EyalDelarea Apr 20, 2025
9246dee
Remove unused variable
EyalDelarea Apr 20, 2025
48859cf
Update
EyalDelarea Apr 21, 2025
a1ca515
Update
EyalDelarea Apr 24, 2025
ed8ab47
Update
EyalDelarea Apr 24, 2025
1d1b453
Remove unneeded link
EyalDelarea Apr 27, 2025
25123d1
Merge branch 'main' of https://github.com/github/docs into update_jfr…
EyalDelarea Apr 27, 2025
554c351
Update
EyalDelarea Apr 27, 2025
c219ce1
Merge branch 'main' of https://github.com/github/docs into update_jfr…
EyalDelarea May 4, 2025
33afa50
Remove the security section
EyalDelarea May 4, 2025
2162642
Update
EyalDelarea May 4, 2025
14c5fee
Merge branch 'main' into update_jfrog_docs
EyalDelarea May 5, 2025
9554cc2
Merge branch 'main' into update_jfrog_docs
EyalDelarea May 12, 2025
6ff7f79
CR
EyalDelarea May 12, 2025
b855d02
Merge branch 'update_jfrog_docs' of https://github.com/EyalDelarea/do…
EyalDelarea May 12, 2025
3126895
Merge branch 'main' into update_jfrog_docs
EyalDelarea May 12, 2025
970249b
Merge branch 'main' into update_jfrog_docs
EyalDelarea May 13, 2025
e3cba36
Merge branch 'main' into update_jfrog_docs
EyalDelarea May 13, 2025
01a424a
Merge branch 'main' into update_jfrog_docs
EyalDelarea May 14, 2025
43a087d
Merge branch 'main' into update_jfrog_docs
EyalDelarea May 18, 2025
fe5153a
Merge branch 'main' into update_jfrog_docs
EyalDelarea May 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,59 +52,52 @@ To use OIDC with JFrog, establish a trust relationship between {% data variables

## Updating your {% data variables.product.prodname_actions %} workflow

Once you establish a trust relationship between {% data variables.product.prodname_actions %} and the JFrog platform, you can update your {% data variables.product.prodname_actions %} workflow file.
### Example: Authenticating with JFrog using OIDC

In your {% data variables.product.prodname_actions %} workflow file, ensure you are using the provider name and audience you configured in the JFrog Platform.

The following example uses the placeholder `YOUR_PROVIDER_NAME`.
The following example uses the placeholders `YOUR_PROVIDER_NAME` and `YOUR_AUDIENCE`.

```yaml
- name: Fetch Access Token from Artifactory
id: fetch_access_token
env:
ID_TOKEN: ${{ steps.idtoken.outputs.id_token }}
run: |
ACCESS_TOKEN=$(curl \
-X POST \
-H "Content-type: application/json" \
https://example.jfrog.io/access/api/v1/oidc/token \
-d \
"{\"grant_type\": \"urn:ietf:params:oauth:grant-type:token-exchange\", \"subject_token_type\":\"urn:ietf:params:oauth:token-type:id_token\", \"subject_token\": \"$ID_TOKEN\", \"provider_name\": \"YOUR_PROVIDER_NAME\"}" | jq .access_token | tr -d '"')
echo ACCESS_TOKEN=$ACCESS_TOKEN >> $GITHUB_OUTPUT
```

The following example shows part of a {% data variables.product.prodname_actions %} workflow file using cURL.

```yaml
- name: Get ID Token (cURL method)
id: idtoken
run: |
ID_TOKEN=$(curl -sLS -H "User-Agent: actions/oidc-client" -H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \
"${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=jfrog-github" | jq .value | tr -d '"')
echo "ID_TOKEN=${ID_TOKEN}" >> $GITHUB_OUTPUT
```

Alternatively, you can set the audience as an environment variable using the `env` context. For more information about the `env` context, see [AUTOTITLE](/actions/learn-github-actions/contexts#env-context).

{% data reusables.actions.oidc-deployment-protection-rules %}
permissions:
id-token: write
contents: read

```yaml
jobs:
build:
runs-on: ubuntu-latest
env:
OIDC_AUDIENCE: 'YOUR_AUDIENCE'
steps:
- name: Setup JFrog CLI with OIDC
id: setup-jfrog-cli
uses: jfrog/setup-jfrog-cli@29fa5190a4123350e81e2a2e8d803b2a27fed15e
with:
JF_URL: ${{ env.JF_URL }}
oidc-provider-name: 'YOUR_PROVIDER_NAME'
oidc-audience: 'YOUR_AUDIENCE' # This is optional

- name: Upload artifact
run: jf rt upload "dist/*.zip" my-repo/

```

Then, in your workflow file, retrieve the value of the variables stored in the `env` context. The following example uses the `env` context to retrieve the OIDC audience.
> [!TIP]
> When OIDC authentication is used, the `setup-jfrog-cli` action automatically provides `oidc-user` and `oidc-token` as step outputs.
> These can be used for other integrations that require authentication with JFrog.
> To reference these outputs, ensure the step has an explicit `id` defined (e.g., `id: setup-jfrog-cli`).

### Example: Using OIDC Credentials in Other Steps
```yaml
- name: Get ID Token (using env context)
uses: {% data reusables.actions.action-github-script %}
id: idtoken
- name: Login to Artifactory Docker Registry
uses: docker/login-action@v3
with:
script: |
const coredemo = require('@actions/core');
let id_token = await coredemo.getIDToken(process.env.OIDC_AUDIENCE);
coredemo.setOutput('id_token', id_token);
registry: ${{ env.JF_URL }}
username: ${{ steps.setup-jfrog-cli.outputs.oidc-user }}
password: ${{ steps.setup-jfrog-cli.outputs.oidc-token }}
```

## Further Reading

- [JFrog OpenID Connect Integration](https://jfrog.com/help/r/jfrog-platform-administration-documentation/openid-connect-integration)
- [Configure Identity Mappings](https://jfrog.com/help/r/jfrog-platform-administration-documentation/identity-mappings)
- [GitHub Docs: About Security Hardening with OIDC](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)
```
Loading
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy