Skip to content
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

OIDC client certificate support #21826

Closed
43 of 46 tasks
NottyCode opened this issue Jul 21, 2022 · 7 comments
Closed
43 of 46 tasks

OIDC client certificate support #21826

NottyCode opened this issue Jul 21, 2022 · 7 comments
Assignees
Labels
Aha Idea Design Approved Epic Used to track Feature Epics that are following the UFO process focalApproved:accessibility Focal Approval granted for Accessibility for the feature focalApproved:demo Approval that a Demo has been scheduled focalApproved:externals Focal Approval granted for APIs/Externals for the feature focalApproved:fat Focal Approval granted for FAT for the feature focalApproved:id Focal Approval granted for ID for the feature focalApproved:performance Focal Approval granted for Performance for the feature focalApproved:serviceability Focal Approval granted for Serviceability for the feature focalApproved:ste Focal Approval granted for STE for the feature focalApproved:svt Focal Approval granted for SVT for the feature ID Required release:23006-beta release:23009 target:23009 team:Security SSO

Comments

@NottyCode
Copy link
Member

NottyCode commented Jul 21, 2022

Description

Request to support RP using a certificate rather than clientSecret for callbacks to the OP. Specific use case would be AzureAD. The OpenID [Specification](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication private_key_jwt)


Documents

When available, add links to required feature documents. Use "N/A" to mark particular documents which are not required by the feature.


Process Overview

General Instructions

The process steps occur roughly in the order as presented. Process steps occasionally overlap.

Each process step has a number of tasks which must be completed or must be marked as not applicable ("N/A").

Unless otherwise indicated, the tasks are the responsibility of the Feature Owner or a Delegate of the Feature Owner.

If you need assistance, reach out to the OpenLiberty/release-architect.

Important: Labels are used to trigger particular steps and must be added as indicated.


Prioritization (Complete Before Development Starts)

The (OpenLiberty/chief-architect) and area leads are responsible for prioritizing the features and determining which features are being actively worked on.

Prioritization

  • Feature added to the "New" column of the Open Liberty project board
    • Epics can be added to the board in one of two ways:
      • From this issue, use the "Projects" section to select the appropriate project board.
      • From the appropriate project board click "Add card" and select your Feature Epic issue
  • Priority assigned
    • Attend the Liberty Backlog Prioritization meeting

Design (Complete Before Development Starts)

Design preliminaries determine whether a formal design, which will be provided by an Upcoming Feature Overview (UFO) document, must be created and reviewed. A formal design is required if the feature requires any of the following: UI, Serviceability, SVT, Performance testing, or non-trivial documentation/ID.

Design Preliminaries

Design

  • POC Design / UFO review requested.
    • Owner adds label Design Review Request
  • POC Design / UFO review scheduled.
    • Follow the instructions in POC-Forum repo
  • POC Design / UFO review completed.
  • POC / UFO Review follow-ons completed.
  • Design / UFO approved. (OpenLiberty/chief-architect) or N/A
    • (OpenLiberty/chief-architect) adds label Design Approved
    • Add the public link to the UFO in Box to the Documents section.
    • The UFO must always accurately reflect the final implementation of the feature. Any changes must be first approved. Afterwards, update the UFO by creating a copy of the original approved slide(s) at the end of the deck and prepend "OLD" to the title(s). A single updated copy of the slide(s) should take the original's place, and have its title(s) prepended with "UPDATED".

No Design

  • No Design requested.
    • Owner adds label No Design Approval Request
  • No Design / No UFO approved. (OpenLiberty/chief-architect) or N/A
    • Approver adds label No Design Approved

FAT Documentation


Implementation

A feature must be prioritized before any implementation work may begin to be delivered (inaccessible/no-ship). However, a design focused approach should still be applied to features, and developers should think about the feature design prior to writing and delivering any code.
Besides being prioritized, a feature must also be socialized (or No Design Approved) before any beta code may be delivered. All new Liberty content must be inaccessible in our GA releases until it is Feature Complete by either marking it kind=noship or beta fencing it.
Code may not GA until this feature has obtained the "Design Approved" or "No Design Approved" label, along with all other tasks outlined in the GA section.

Feature Development Begins

  • Add the In Progress label

Legal and Translation

In order to avoid last minute blockers and significant disruptions to the feature, the legal items need to be done as early in the feature process as possible, either in design or as early into the development as possible. Similarly, translation is to be done concurrently with development. Both MUST be completed before Beta or GA is requested.

Legal (Complete before Feature Complete Date)

  • Changed or new open source libraries are cleared and approved, or N/A. (Legal Release Services/Cass Tucker/Release PM).
  • Licenses and Certificates of Originality (COOs) are updated, or N/A

Translation (Complete 1 week before Feature Complete Date)

  • PII updates are merged, or N/A. Note timing with translation shipments.

Beta

In order to facilitate early feedback from users, all new features and functionality should first be released as part of a beta release.

Beta Code

  • Beta fence the functionality
    • kind=beta, ibm:beta, ProductInfo.getBetaEdition()
  • Beta development complete and feature ready for inclusion in a beta release
    • Add label target:beta and the appropriate target:YY00X-beta (where YY00X is the targeted beta version).
  • Feature delivered into beta

Beta Blog (Complete 1.5 weeks before beta eGA)


GA

A feature is ready to GA after it is Feature Complete and has obtained all necessary Focal Point Approvals.

Feature Complete

  • Feature implementation and tests completed.
    • All PRs are merged.
    • All epic and child issues are closed.
    • All stop ship issues are completed.
  • Legal: all necessary approvals granted.
  • Translation: All messages translated or sent for translation for upcoming release
  • GA development complete and feature ready for inclusion in a GA release
    • Add label target:ga and the appropriate target:YY00X (where YY00X is the targeted GA version).
    • Inclusion in a release requires the completion of all Focal Point Approvals.

Focal Point Approvals (Complete by Feature Complete Date)

These occur only after GA of this feature is requested (by adding a target:ga label). GA of this feature may not occur until all approvals are obtained.

All Features

  • APIs/Externals Externals have been reviewed or N/A. (OpenLiberty/externals-approvers)
    • Approver adds label focalApproved:externals
  • Demo Demo is scheduled for an upcoming EOI or N/A. (OpenLiberty/demo-approvers)
    • Add comment @OpenLiberty/demo-approvers Demo scheduled for EOI [Iteration Number] to this issue.
    • Approver adds label focalApproved:demo.
  • FAT All Tests complete and running successfully in SOE or N/A. (OpenLiberty/fat-approvers)
    • Approver adds label focalApproved:fat.
  • Globalization Translation and TVT are complete or N/A. (OpenLiberty/globalization-approvers)
    • Approver adds label focalApproved:globalization.

Design Approved Features

  • Accessibility Accessibility testing completed or N/A. (OpenLiberty/accessibility-approvers)
    • Approver adds label focalApproved:accessibility.
  • ID Documentation is complete or N/A. (OpenLiberty/id-approvers)
    • Approver adds label focalApproved:id.
    • NOTE: If only trivial documentation changes are required, you may reach out to the ID Feature Focal to request a ID Required - Trivial label. Unlike features with regular ID requirement, those with ID Required - Trivial label do not have a hard requirement for a Design/UFO.

  • Performance Performance testing is complete or N/A. (OpenLiberty/performance-approvers)
    • Approver adds label focalApproved:performance.
  • Serviceability Serviceability has been addressed or N/A. (OpenLiberty/serviceability-approvers)
    • Approver adds label focalApproved:sve.
  • STE Skills Transfer Education chart deck is complete or N/A. (OpenLiberty/ste-approvers)
    • Approver adds label focalApproved:ste.
  • SVT System Verification Test is complete or N/A. (OpenLiberty/svt-approvers)
    • Approver adds label focalApproved:svt.

Remove Beta Fencing (Complete by Feature Complete Date)

  • Beta guards are removed, or N/A
    • Only after all necessary Focal Point Approvals have been granted.

GA Blog (Complete by Feature Complete Date)

Post GA


Other Deliverables


@NottyCode NottyCode added Epic Used to track Feature Epics that are following the UFO process Aha Idea labels Jul 21, 2022
ayoho added a commit to ayoho/open-liberty that referenced this issue Apr 21, 2023
ayoho added a commit to ayoho/open-liberty that referenced this issue Apr 21, 2023
… config attributes

- Adds the following attributes to the metatype for the `<openidConnectClient>` and `<oidcLogin>` elements:
    - tokenEndpointAuthSigningAlgorithm
    - keyAliasName

For OpenLiberty#21826
ayoho added a commit to ayoho/open-liberty that referenced this issue Apr 24, 2023
… config attributes

- Adds the following attributes to the metatype for the `<openidConnectClient>` and `<oidcLogin>` elements:
    - tokenEndpointAuthSigningAlgorithm
    - keyAliasName

For OpenLiberty#21826
ayoho added a commit to ayoho/open-liberty that referenced this issue Apr 24, 2023
… config attributes

- Adds the following attributes to the metatype for the `<openidConnectClient>` and `<oidcLogin>` elements:
    - tokenEndpointAuthSigningAlgorithm
    - keyAliasName

For OpenLiberty#21826
ayoho added a commit to ayoho/open-liberty that referenced this issue Apr 25, 2023
… config attributes

- Adds the following attributes to the metatype for the `<openidConnectClient>` and `<oidcLogin>` elements:
    - tokenEndpointAuthSigningAlgorithm
    - keyAliasName

For OpenLiberty#21826
ayoho added a commit to ayoho/open-liberty that referenced this issue Apr 26, 2023
…uthentication

- Adds logic to the OIDC token endpoint request code to add `private_key_jwt` related parameters when using that token endpoint auth method
- Adds a large part of the logic to the `PrivateKeyJwtAuthMethod` class to create the JWT for client authentication
    - Note: Still missing logic to obtain the key itself using the keyAliasName

For OpenLiberty#21826
ayoho added a commit to ayoho/open-liberty that referenced this issue Apr 26, 2023
…uthentication

- Adds logic to the OIDC token endpoint request code to add `private_key_jwt` related parameters when using that token endpoint auth method
- Adds a large part of the logic to the `PrivateKeyJwtAuthMethod` class to create the JWT for client authentication
    - Note: Still missing logic to obtain the key itself using the keyAliasName

For OpenLiberty#21826
ayoho added a commit to ayoho/open-liberty that referenced this issue Apr 26, 2023
…uthentication

- Adds logic to the OIDC token endpoint request code to add `private_key_jwt` related parameters when using that token endpoint auth method
- Adds a large part of the logic to the `PrivateKeyJwtAuthMethod` class to create the JWT for client authentication
    - Note: Still missing logic to obtain the key itself using the keyAliasName

For OpenLiberty#21826
ayoho added a commit to ayoho/open-liberty that referenced this issue Apr 26, 2023
Adds logic for retrieving the private key to use from the configured keystore.

For OpenLiberty#21826
@donbourne
Copy link
Member

donbourne commented May 1, 2023

UFO review - 2023-05-01

automated testing
    will we have negative tests - if they specify one alg in the config, but that's not what they use in the payload
        won't occur - the alg specified in the config is what the client will use

what if op doesn't support an alg?
    how does it fall back?
    always falls back to RS256 since it's universally supported
    could be that i want to fail if I can't use the alg of my choice
    right now, no mechanism to require it to use the alg and not allow fallback to RS256
    if someone specifies their own alg - we always go to discovery endpoint
        could just not specify the discovery endpoint, and in that case it will fail if server side doesn't support the algorithm

perf
    what's plan for perf testing?
        there's no option in spec to not do it
        jared: there's no test for those flows - could evaluate it and profile it
        joe: not tested in MicroProfile testing
        *** ACTION: perf team should evaluate and see if there are things to fix

is there an out of band process to give your key to op
    OP knows which key to use
    *** ACTION: should provide doc on how to create key and upload to the OP
    create a key pair and make sure you upload to the OP...

@covener
Copy link
Member

covener commented May 1, 2023

Interop testing maybe for SVT?

@ayoho ayoho self-assigned this May 15, 2023
@ayoho ayoho added the In Progress Items that are in active development. label May 15, 2023
@c00crane
Copy link
Member

c00crane commented May 22, 2023

Feature Test Summary: #25323

@ayoho ayoho added ID Required target:23006-beta target:beta The Epic or Issue is targetted for the next beta labels May 23, 2023
@chirp1
Copy link
Contributor

chirp1 commented Jun 2, 2023

The information to document the feature is in OpenLiberty/docs#6689 . Approving this epic.

@chirp1 chirp1 added the focalApproved:id Focal Approval granted for ID for the feature label Jun 2, 2023
@jhanders34 jhanders34 added the focalApproved:performance Focal Approval granted for Performance for the feature label Jun 7, 2023
@natalie-bernhard natalie-bernhard added the focalApproved:accessibility Focal Approval granted for Accessibility for the feature label Jun 27, 2023
@hanczaryk hanczaryk added the focalApproved:svt Focal Approval granted for SVT for the feature label Jun 27, 2023
@ayoho
Copy link
Member

ayoho commented Jun 30, 2023

@OpenLiberty/demo-approvers Demo scheduled for EOI 23.14.

@tevans78 tevans78 added the focalApproved:demo Approval that a Demo has been scheduled label Jun 30, 2023
@ayoho
Copy link
Member

ayoho commented Jun 30, 2023

@OpenLiberty/serviceability-approvers

UFO: Does the UFO identify the most likely problems customers will see and identify how the feature will enable them to diagnose and solve those problems without resorting to raising a PMR? Have these issues been addressed in the implementation?

Yes, the Serviceability slide covers the common error scenarios, and I've written and confirmed several new NLS messages that cover the problematic scenarios.

Test and Demo: As part of the serviceability process we're asking feature teams to test and analyze common problem paths for serviceability and demo those problem paths to someone not involved in the development of the feature (eg. L2, test team, or another development team). a) What problem paths were tested and demonstrated? b) Who did you demo to? c) Do the people you demo'd to agree that the serviceability of the demonstrated problem scenarios is sufficient to avoid PMRs for any problems customers are likely to encounter, or that L2 should be able to quickly address those problems without need to engage L3?

a) Problem paths tested/demonstrated:

  • An sslRef is not configured
  • A key alias is not configured
  • The configured key alias doesn't exist in the keystore
  • Signing key is a different algorithm type than the one specified in the config

b) Demonstrated to testing team (Chris Crane)

c) Yes, serviceability needs are believed to have been met

SVT: SVT team is often the first team to try new features and often encounters problems setting up and using them. Note that we're not expecting SVT to do full serviceability testing -- just to sign-off on the serviceability of the problem paths they encountered. a) Who conducted SVT tests for this feature? b) Do they agree that the serviceability of the problems they encountered is sufficient to avoid PMRs, or that L2 should be able to quickly address those problems without need to engage L3?

There was no SVT needed for this feature.

Service: Which L2 / L3 queues will handle PMRs for this feature? Ensure they are present in the contact reference file and in the queue contact summary, and that the respective L2/L3 teams know they are supporting it. Ask Don Bourne if you need links or more info.

WAS L2: SEC
WAS L3: Security SSO

Metrics: Does this feature add any new metrics or emit any new JSON events? If yes, have you updated the JMX metrics reference list / Metrics reference list / JSON log events reference list in the Open Liberty docs?

N/A

@cbridgha cbridgha added the focalApproved:externals Focal Approval granted for APIs/Externals for the feature label Jul 6, 2023
@dave-waddling dave-waddling added the focalApproved:fat Focal Approval granted for FAT for the feature label Jul 20, 2023
@donbourne donbourne added the focalApproved:serviceability Focal Approval granted for Serviceability for the feature label Jul 24, 2023
@ayoho
Copy link
Member

ayoho commented Jul 28, 2023

@OpenLiberty/ste-approvers STE slides uploaded to the STE archive.

@tngiang73 tngiang73 added the focalApproved:ste Focal Approval granted for STE for the feature label Aug 2, 2023
@LifeIsGood524 LifeIsGood524 added release:23009 and removed target:ga The Epic is ready for focal approvals, after which it can GA. labels Sep 5, 2023
@ayoho ayoho removed the In Progress Items that are in active development. label Sep 21, 2023
@ayoho ayoho closed this as completed Sep 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Aha Idea Design Approved Epic Used to track Feature Epics that are following the UFO process focalApproved:accessibility Focal Approval granted for Accessibility for the feature focalApproved:demo Approval that a Demo has been scheduled focalApproved:externals Focal Approval granted for APIs/Externals for the feature focalApproved:fat Focal Approval granted for FAT for the feature focalApproved:id Focal Approval granted for ID for the feature focalApproved:performance Focal Approval granted for Performance for the feature focalApproved:serviceability Focal Approval granted for Serviceability for the feature focalApproved:ste Focal Approval granted for STE for the feature focalApproved:svt Focal Approval granted for SVT for the feature ID Required release:23006-beta release:23009 target:23009 team:Security SSO
Projects
Status: 23.0.0.9
Status: Done
Development

No branches or pull requests