Skip to content

chore(docs): clarify OpenTDF OIDC relationship - #3826

Open
jrschumacher wants to merge 2 commits into
mainfrom
docs/clarify-oidc-relationship
Open

chore(docs): clarify OpenTDF OIDC relationship#3826
jrschumacher wants to merge 2 commits into
mainfrom
docs/clarify-oidc-relationship

Conversation

@jrschumacher

@jrschumacher jrschumacher commented Aug 3, 2026

Copy link
Copy Markdown
Member

Summary

  • add a dedicated OIDC relationship document explaining the IdP/OpenTDF boundary
  • link the new doc from the repo docs entry points and local quickstart
  • correct the documented auth cache refresh and DPoP skew config keys to match current implementation

Closes #3824
Jira: https://virtru.atlassian.net/browse/DSPX-4261

Summary by CodeRabbit

  • Documentation
    • Added comprehensive guidance for configuring external OIDC authentication, including issuer validation, claims, discovery, JWKS, and DPoP.
    • Clarified that OpenTDF consumes tokens from an external identity provider rather than acting as one.
    • Updated authentication configuration references, defaults, and environment-variable mappings.
    • Improved links and documentation for OIDC and the Multi-Strategy Entity Resolution Service.

Signed-off-by: Ryan Schumacher <j.r.schumacher@gmail.com>
@github-actions github-actions Bot added docs Documentation size/m labels Aug 3, 2026
@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The documentation defines OpenTDF as an OIDC relying party, explains authentication and authorization boundaries, updates OIDC configuration guidance, and refreshes links for OIDC and ERS documentation.

Changes

OIDC documentation

Layer / File(s) Summary
OIDC model and authentication flow
docs/OIDC.md, README.md
Documents external OIDC providers, discovery, token validation, claims, DPoP, identity context, and the end-to-end authentication flow.
OIDC configuration and local provider guidance
docs/Configuring.md, docs/Consuming.md
Updates authentication fields, environment variables, issuer validation, and Keycloak deployment guidance.
ERS and related documentation navigation
README.md, docs/OIDC.md
Updates ERS references and links to related configuration, authorization, SDK, and authentication documentation.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: dmihalcik-virtru

Poem

A rabbit reads the OIDC guide,
With trusted claims kept close beside.
Keycloak points the tokens through,
OpenTDF checks what they should do.
ERS links hop into view.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the documentation change that clarifies OpenTDF's relationship with OIDC.
Linked Issues check ✅ Passed The documentation addresses the issue objectives, including provider boundaries, token concepts, authentication flow, policy use, and related links.
Out of Scope Changes check ✅ Passed All changes support the linked documentation objectives, including terminology, configuration references, and documentation entry points.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/clarify-oidc-relationship

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@jrschumacher jrschumacher changed the title docs: clarify OpenTDF OIDC relationship chore(docs): clarify OpenTDF OIDC relationship Aug 3, 2026
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 151.036581ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 77.347203ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 327.638074ms
Throughput 305.21 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 37.798797615s
Average Latency 376.425732ms
Throughput 132.28 requests/second

Signed-off-by: Ryan Schumacher <j.r.schumacher@gmail.com>
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 126.790399ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 75.466428ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 304.615293ms
Throughput 328.28 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 37.816567916s
Average Latency 377.360877ms
Throughput 132.22 requests/second

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

⚠️ Govulncheck found vulnerabilities ⚠️

The following modules have known vulnerabilities:

  • examples
  • otdfctl
  • sdk
  • service
  • lib/fixtures
  • tests-bdd

See the workflow run for details.

@jrschumacher
jrschumacher marked this pull request as ready for review August 3, 2026 20:34
@jrschumacher
jrschumacher requested a review from a team as a code owner August 3, 2026 20:34

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/OIDC.md`:
- Around line 59-62: Update the Configuring.md YAML example referenced by the
OIDC documentation to use the runtime groups_claim key instead of group_claim,
matching PolicyConfig.GroupsClaim and its mapstructure configuration. Preserve
the surrounding authentication policy example unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: c287b538-3376-49ea-bf04-ab31e082c466

📥 Commits

Reviewing files that changed from the base of the PR and between 2619a40 and 9de0f74.

📒 Files selected for processing (4)
  • README.md
  • docs/Configuring.md
  • docs/Consuming.md
  • docs/OIDC.md

Comment thread docs/OIDC.md
Comment on lines +59 to +62
- The current auth policy configuration supports:
- `server.auth.policy.username_claim` (default `preferred_username`)
- `server.auth.policy.groups_claim` (default `realm_access.roles`)
- `server.auth.policy.client_id_claim` (default `azp`)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Expected: one runtime claim key, with matching YAML and Markdown documentation.
rg -n -C 4 'groups_claim|group_claim|GroupsClaim|GroupClaim' \
  --glob '*.go' --glob '*.yaml' --glob '*.md' .

Repository: opentdf/platform

Length of output: 50372


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the runtime policy field mapping and the documented example context.
sed -n '1,45p' service/internal/auth/authz/policy.go
sed -n '570,615p' docs/Configuring.md
sed -n '75,90p' opentdf-dev.yaml

Repository: opentdf/platform

Length of output: 4456


Use the runtime groups_claim key in the Configuring.md example.

PolicyConfig.GroupsClaim maps to mapstructure:"groups_claim", and the YAML examples use groups_claim. The group_claim: key in docs/Configuring.md line 609 is ignored by the current configuration contract and can leave group membership unset.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/OIDC.md` around lines 59 - 62, Update the Configuring.md YAML example
referenced by the OIDC documentation to use the runtime groups_claim key instead
of group_claim, matching PolicyConfig.GroupsClaim and its mapstructure
configuration. Preserve the surrounding authentication policy example unchanged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation size/m

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: clarify OpenTDF's relationship to OIDC

1 participant