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 31 commits into
base: main
Choose a base branch
from
Open
Changes from 20 commits
Commits
Show all changes
31 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
b2d7317
Merge branch 'main' into update_jfrog_docs
subatoi May 28, 2025
285c775
Merge branch 'main' into update_jfrog_docs
subatoi May 28, 2025
0398058
Merge branch 'main' into update_jfrog_docs
EyalDelarea May 29, 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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this information not accurate any more? It seems to add a nice bridge between the H2 and the H3

### Example: Authenticating with JFrog using OIDC
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Example: Authenticating with JFrog using OIDC
### 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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- name: Setup JFrog CLI with OIDC
- name: Set up JFrog CLI with OIDC

id: setup-jfrog-cli
uses: jfrog/setup-jfrog-cli@v4
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`).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
> To reference these outputs, ensure the step has an explicit `id` defined (e.g., `id: setup-jfrog-cli`).
> To reference these outputs, ensure the step has an explicit `id` defined (for example `id: setup-jfrog-cli`).


### Example: Using OIDC Credentials in Other Steps
Copy link
Contributor

@subatoi subatoi May 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Example: Using OIDC Credentials in Other Steps
### Using OIDC Credentials in other steps

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a bit of extra context you could add here, just to set the scene for the example?

```yaml
- name: Get ID Token (using env context)
uses: {% data reusables.actions.action-github-script %}
id: idtoken
- name: Login to Artifactory Docker Registry
Copy link
Contributor

@subatoi subatoi May 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- name: Login to Artifactory Docker Registry
- name: Sign in to Artifactory Docker registry

If this isn't accurate, please say so; I'm only recommending this based on https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/s/sign-in-sign-out

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Further Reading
## Further reading


- [JFrog OpenID Connect Integration](https://jfrog.com/help/r/jfrog-platform-administration-documentation/openid-connect-integration)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [JFrog OpenID Connect Integration](https://jfrog.com/help/r/jfrog-platform-administration-documentation/openid-connect-integration)
- [OpenID Connect Integration](https://jfrog.com/help/r/jfrog-platform-administration-documentation/openid-connect-integration) in the JFrog documentation

- [Configure Identity Mappings](https://jfrog.com/help/r/jfrog-platform-administration-documentation/identity-mappings)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [Configure Identity Mappings](https://jfrog.com/help/r/jfrog-platform-administration-documentation/identity-mappings)
- [Identity Mappings](https://jfrog.com/help/r/jfrog-platform-administration-documentation/identity-mappings) in the JFrog documentation

- [GitHub Docs: About Security Hardening with OIDC](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [GitHub Docs: About Security Hardening with OIDC](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)
- [AUTOTITLE](actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)

```
Loading