Skip to content

POC: Typed credentials exploration for Helm binding#2148

Closed
matthiasbruns wants to merge 7 commits into
open-component-model:mainfrom
matthiasbruns:feat/800_typed_credentials_poc
Closed

POC: Typed credentials exploration for Helm binding#2148
matthiasbruns wants to merge 7 commits into
open-component-model:mainfrom
matthiasbruns:feat/800_typed_credentials_poc

Conversation

@matthiasbruns

@matthiasbruns matthiasbruns commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

This PR is for exploration purposes only. The code serves as a reference implementation to validate design decisions. It is not intended to be merged.

What this PR does / why we need it

Explores introducing typed credentials and consumer identity types into the OCM credential system, using the Helm binding as a reference implementation. The findings inform ADR 0015 in #2149.

Which issue(s) this PR fixes

open-component-model/ocm-project#980
ADR: #2149

Testing

How to test the changes

This is an exploration POC. To run the typed credential tests:

go test ocm.software/open-component-model/bindings/go/helm/... -run "Typed|CredentialAcceptor" -v
go test ocm.software/open-component-model/cli/integration -run "Test_TypedCredentials" -v
Verification
  • All existing tests pass (no regressions)
  • New typed credential tests pass end-to-end
  • CredentialAcceptor validation warnings verified

@coderabbitai

coderabbitai Bot commented Apr 2, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: dd9b43ce-9e05-4c0a-9cf1-819c612c002c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

@github-actions github-actions Bot added area/documentation Documentation related size/l Large labels Apr 2, 2026
@matthiasbruns matthiasbruns force-pushed the feat/800_typed_credentials_poc branch 5 times, most recently from a37c51a to 8b3eff8 Compare April 2, 2026 16:27
@github-actions github-actions Bot added size/xl Extra large and removed size/l Large labels Apr 15, 2026
@netlify

netlify Bot commented Apr 15, 2026

Copy link
Copy Markdown

Deploy Preview for ocm-website canceled.

Name Link
🔨 Latest commit 5b175c9
🔍 Latest deploy log https://app.netlify.com/projects/ocm-website/deploys/69e5f1334184c00008c15829

@matthiasbruns matthiasbruns force-pushed the feat/800_typed_credentials_poc branch 2 times, most recently from 07f49db to fd322c3 Compare April 15, 2026 12:01
@github-actions github-actions Bot added size/l Large and removed size/xl Extra large labels Apr 15, 2026
…ation

Add typed credential and consumer identity specs alongside the existing
map[string]string Resolver interface. No downstream modules are changed.

New typed credential specs (per-binding):
- OCICredentials/v1 (Username, Password, AccessToken, RefreshToken)
- HelmCredentials/v1 (Username, Password, CertFile, KeyFile, Keyring)
- RSACredentials/v1 (PublicKeyPEM, PublicKeyPEMFile, PrivateKeyPEM, PrivateKeyPEMFile)

New typed identity spec:
- OCIRegistryIdentity with runtime.IdentityProvider interface

Core additions to credentials module:
- TypedResolver interface (extends Resolver with ResolveTyped)
- Graph implements both Resolver and TypedResolver
- ConsumerIdentityTypeScheme and CredentialTypeScheme on Options
- DirectCredentials alias registration (Credentials/v1, DirectCredentials/v1)

Each binding can migrate to TypedResolver in its own PR without
blocking other modules. See ADR 0015 for migration path details.

Refs: ocm-project#800, ocm-project#702, ocm-project#980
On-behalf-of: SAP <matthias.bruns@sap.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>

# Conflicts:
#	website/assets/images/logo-image.png
#	website/assets/logo-image.png
#	website/static/images/logo-horizontal-white-text.png
On-behalf-of: SAP <matthias.bruns@sap.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
@matthiasbruns matthiasbruns force-pushed the feat/800_typed_credentials_poc branch from 51fb010 to 54e700b Compare April 16, 2026 10:28
@matthiasbruns matthiasbruns linked an issue Apr 16, 2026 that may be closed by this pull request
4 tasks
On-behalf-of: SAP <matthias.bruns@sap.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
On-behalf-of: SAP <matthias.bruns@sap.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
On-behalf-of: SAP <matthias.bruns@sap.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
…ckwards compatibility

On-behalf-of: SAP <matthias.bruns@sap.com>
Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
matthiasbruns added a commit that referenced this pull request Apr 28, 2026
<!-- markdownlint-disable MD041 -->
#### What this PR does / why we need it
**Phase 1** of the typed credentials
[ADR](https://github.com/open-component-model/open-component-model/blob/main/docs/adr/0017_typed_credentials.md)

This PR only touches the credential bindings and should not break
anything.

#### Which issue(s) this PR fixes
Contributes:
open-component-model/ocm-project#704

You can see the whole picture in
#2148

#### Testing

##### How to test the changes

Unit & integration tests only.

I ran `task init/go.work` with the updated `credentials` binding to see
if the udate breaks ocm - it does not :)

##### Verification

- [x] I have added/updated tests for my changes (see [Test
Requirements](../CONTRIBUTING.md#test-requirements))
- [x] Tests pass locally (`task test` and `task test/integration` if
applicable)
- [x] My changes do not decrease test coverage

---------

Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
matthiasbruns added a commit that referenced this pull request May 4, 2026
<!-- markdownlint-disable MD041 -->
#### What this PR does / why we need it
**Phase 2** typed oci bindings
[ADR](https://github.com/open-component-model/open-component-model/blob/main/docs/adr/0018_typed_credentials.md)

#### Which issue(s) this PR fixes
Contributes:
open-component-model/ocm-project#986

You can see the whole picture in
#2148

#### Testing

##### How to test the changes

Unit & integration tests only.

I ran `task init/go.work` with the updated `credentials` binding to see
if the update breaks ocm - it does not :)

##### Verification

- [x] I have added/updated tests for my changes (see [Test
Requirements](../CONTRIBUTING.md#test-requirements))
- [x] Tests pass locally (`task test` and `task test/integration` if
applicable)
- [x] My changes do not decrease test coverage

---------

Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
Co-authored-by: DevBot <devbot@openclaw.ai>
ocmbot2 Bot pushed a commit to morri-son/open-component-model that referenced this pull request May 4, 2026
…del#2360)

<!-- markdownlint-disable MD041 -->
#### What this PR does / why we need it
**Phase 2** typed oci bindings
[ADR](https://github.com/open-component-model/open-component-model/blob/main/docs/adr/0018_typed_credentials.md)

#### Which issue(s) this PR fixes
Contributes:
open-component-model/ocm-project#986

You can see the whole picture in
open-component-model#2148

#### Testing

##### How to test the changes

Unit & integration tests only.

I ran `task init/go.work` with the updated `credentials` binding to see
if the update breaks ocm - it does not :)

##### Verification

- [x] I have added/updated tests for my changes (see [Test
Requirements](../CONTRIBUTING.md#test-requirements))
- [x] Tests pass locally (`task test` and `task test/integration` if
applicable)
- [x] My changes do not decrease test coverage

---------

Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
Co-authored-by: DevBot <devbot@openclaw.ai> 26020bb
@matthiasbruns

Copy link
Copy Markdown
Contributor Author

closed but kept as reference

jakobmoellerdev pushed a commit that referenced this pull request May 7, 2026
<!-- markdownlint-disable MD041 -->
#### What this PR does / why we need it
**Phase 2** typed signing bindings
[ADR](https://github.com/open-component-model/open-component-model/blob/main/docs/adr/0018_typed_credentials.md)

#### Which issue(s) this PR fixes
Contributes:
open-component-model/ocm-project#988

You can see the whole picture in
#2148

#### Testing

##### How to test the changes

Unit & integration tests only.

I ran `task init/go.work` with the updated `credentials` binding to see
if the update breaks ocm - it does not :)

##### Verification

- [x] I have added/updated tests for my changes (see [Test
Requirements](../CONTRIBUTING.md#test-requirements))
- [x] Tests pass locally (`task test` and `task test/integration` if
applicable)
- [x] My changes do not decrease test coverage

---------

Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
matthiasbruns added a commit that referenced this pull request May 15, 2026
<!-- markdownlint-disable MD041 -->
#### What this PR does / why we need it
**Phase 2** typed helm bindings
[ADR](https://github.com/open-component-model/open-component-model/blob/main/docs/adr/0018_typed_credentials.md)

#### Which issue(s) this PR fixes
Contributes:
open-component-model/ocm-project#988

You can see the whole picture in
#2148

#### Testing

##### How to test the changes

I ran `task init/go.work` with the updated `credentials` binding to see
if the update breaks ocm - it does not :)

##### Verification

- [x] I have added/updated tests for my changes (see [Test
Requirements](../CONTRIBUTING.md#test-requirements))
- [x] Tests pass locally (`task test` and `task test/integration` if
applicable)
- [x] My changes do not decrease test coverage

---------

Signed-off-by: Matthias Bruns <git@matthiasbruns.com>
Co-authored-by: Jakob Möller <jakob.moeller@sap.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/documentation Documentation related size/l Large

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ADR: Typed credentials / identities

1 participant