Skip to content

proposed edits to github actions guide page - #2347

Merged
ssveta7ak merged 1 commit into
sveta/docs-jwt-accessfrom
kenjenkins/docs-jwt-access-edits
Aug 13, 2026
Merged

proposed edits to github actions guide page#2347
ssveta7ak merged 1 commit into
sveta/docs-jwt-accessfrom
kenjenkins/docs-jwt-access-edits

Conversation

@kenjenkins

Copy link
Copy Markdown
Contributor

Proposed edits to #2346:

Reorder and streamline the introduction, reduce some duplication, and remove some details that might be more confusing than helpful.

Split the example workflow into two steps: I think this might be more representative of real-world use. It seems likely to me that you might want to make multiple requests using the OIDC token, so we can show how to store it into an environment variable that GitHub will make available in other steps.

@kenjenkins
kenjenkins requested a review from ssveta7ak August 12, 2026 22:32
@kenjenkins
kenjenkins requested a review from a team as a code owner August 12, 2026 22:32
@kenjenkins
kenjenkins requested review from nickytonline and removed request for a team August 12, 2026 22:32
@netlify

netlify Bot commented Aug 12, 2026

Copy link
Copy Markdown

Deploy Preview for pomerium-docs ready!

Name Link
🔨 Latest commit 6442f5c
🔍 Latest deploy log https://app.netlify.com/projects/pomerium-docs/deploys/6a7cfe46109f090008bfc9cc
😎 Deploy Preview https://deploy-preview-2347--pomerium-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@greptile-apps

greptile-apps Bot commented Aug 12, 2026

Copy link
Copy Markdown

Greptile Summary

The PR streamlines the GitHub Actions OIDC guide and separates token acquisition from the protected-route request.

  • Reorganizes the audience, prerequisites, and conceptual overview.
  • Revises the Pomerium configuration explanation and verification steps.
  • Stores the GitHub-issued OIDC token in GITHUB_ENV for reuse by later workflow steps.

Confidence Score: 4/5

The PR is not yet safe to merge because the previously reported missing-token checkpoint still gives readers the wrong expected response.

The current guide continues to expect 403 for a bearer route with no token, while the repository's bearer-token reference specifies 401 Unauthorized, so a correctly configured deployment can fail the documented checkpoint.

Files Needing Attention: content/docs/guides/github-actions.mdx

Important Files Changed

Filename Overview
content/docs/guides/github-actions.mdx Reworks the guide's structure and changes the sample workflow to acquire and consume the OIDC token in separate steps.

Sequence Diagram

sequenceDiagram
  participant W as GitHub Actions
  participant G as GitHub OIDC
  participant P as Pomerium
  participant U as Upstream
  W->>G: Request OIDC token
  G-->>W: Return signed JWT
  W->>W: Store token in GITHUB_ENV
  W->>P: Request with Bearer token
  P->>P: Verify token and policy
  P->>U: Proxy authorized request
Loading

Reviews (2): Last reviewed commit: "revisions to github actions guide page" | Re-trigger Greptile

Comment thread content/docs/guides/github-actions.mdx
Comment thread content/docs/guides/github-actions.mdx Outdated
Reorder and streamline the introduction, reduce some duplication, and
remove some details that might be more confusing than helpful.
@kenjenkins
kenjenkins force-pushed the kenjenkins/docs-jwt-access-edits branch from aa05a72 to 6442f5c Compare August 12, 2026 23:14
@ssveta7ak
ssveta7ak merged commit 396c0c2 into sveta/docs-jwt-access Aug 13, 2026
9 of 10 checks passed
@ssveta7ak
ssveta7ak deleted the kenjenkins/docs-jwt-access-edits branch August 13, 2026 10:08
ssveta7ak added a commit that referenced this pull request Aug 13, 2026
* docs(bearer-tokens): document machine-to-machine access with bearer tokens & JWTs

Add a cohesive capabilities page introducing how clients present an
Authorization: Bearer token to Pomerium to reach upstreams without an
interactive sign-in, covering all four bearer_token_format modes
(default, idp_access_token, idp_identity_token, jwt) as a single feature.

- New capabilities page with Kubernetes service account example
- New reference pages for jwt_allowed_issuers and jwt_allowed_audiences
- Document the new jwt option on the bearer-token-format reference
- Register the capabilities page in the sidebar

* docs(bearer-tokens): tighten prose style on capabilities page

Reduce emphasis to structural labels, thin em-dashes, de-bold inline
HTTP status codes, and recast the two parallel no-X-no-Y-no-Z fragments.
Prose-only; no content or link changes.

* docs(bearer-tokens): reframe JWT bearer acceptance as identity_providers

The JWT bearer-token feature shipped with a consolidated identity_providers
map rather than the flat jwt_allowed_issuers + jwt_allowed_audiences settings
these pages originally documented. Rewrite the pages to match:

- identity_providers is a map keyed by provider name; audiences are
  per-provider (required, non-empty, fail-closed). Drop the old 'name' field.
- Routes select providers via an optional per-route identity_providers
  allowlist; bearer_token_format: jwt remains the gate.
- Document the identity model: session idp_id = provider name, user id =
  <provider-name>/<sub>, sub required, session TTL capped to
  min(token exp, cookie_expire), raw JWT not persisted.
- supported_algs rejects none/HS*; JWKS TLS reuses the global
  certificate_authority_file.

Replace reference/jwt-allowed-issuers with reference/identity-providers
("JWT Identity Providers"), delete reference/jwt-allowed-audiences, and add
reference/routes/identity-providers for the per-route allowlist.

* docs(bearer-tokens): consolidate format coverage into the reference

The capabilities page split format coverage: it pointed to Bearer Token
Format for the IdP formats while covering the jwt format itself, a false
symmetry since the reference is the setting's home for all four formats.

Move the format-agnostic mechanics and the four-format table to the
Bearer Token Format reference, and the caller-identity behavior to JWT
Identity Providers. The capabilities page becomes a pure jwt/M2M workflow
guide that references those, collapsing duplication that already existed
between it and the identity_providers reference.

* docs(bearer-tokens): add mermaid diagrams for JWT verification & format dispatch

* docs(guides): add GitHub Actions JWT bearer token guide

Add a guide for letting a GitHub Actions workflow call a Pomerium-protected
route with the OIDC token GitHub issues to each job, verified against the
trusted issuer declared in identity_providers on a route using
bearer_token_format: jwt, and authorized on the token's claims.

AI usage disclosure (AI_POLICY.md): drafted and revised with Claude Code.
The workflow, config, status codes, and log output were verified against a
live Pomerium deployment and the Pomerium source before publishing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs(guides): show the bare token request and route call (#2346)

* proposed edits to github actions guide page (#2347)

revisions to github actions guide page

Reorder and streamline the introduction, reduce some duplication, and
remove some details that might be more confusing than helpful.

* docs(guides): mark github-actions guide non-sealable for fixture validation (#2346)

The fixture harness seals a guide into Docker Compose with an in-network
Keycloak. Neither half of this flow survives that: a GitHub Actions OIDC
token can only be minted inside a runner, where GitHub injects the
ACTIONS_ID_TOKEN_REQUEST_* variables, and Pomerium must reach
token.actions.githubusercontent.com for the issuer's JWKS.

Add validate/SKIP with that reason and the manual validation record, plus
validate/screenshots-skip, which the media policy requires because the
guide references no screenshot.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Denis Mishin <dmishin@pomerium.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Kenneth Jenkins <51246568+kenjenkins@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants