OpenLiberty / open-liberty

Open Liberty is a highly composable, fast to start, dynamic application server runtime environment
https://openliberty.io
Eclipse Public License 2.0
1.15k stars 592 forks source link

BETA BLOG - private_key_jwt authentication support for OIDC clients #25333

Closed ayoho closed 1 year ago

ayoho commented 1 year ago

The information you provide here will be included in the Open Liberty beta blog post (example), which will be published on openliberty.io/blog/, and potentially elsewhere, to promote this beta feature/function of Open Liberty. For this post to be included in the beta issue please make sure that this is completed by the end of Friday following the GM (Tuesday). The beta and release blogs are created using automation and rely on you following the template's structure. DO NOT REMOVE/ALTER THE <GHA> TAGS THROUGHOUT THIS TEMPLATE.

Please provide the following information: ​

  1. Which Liberty feature(s) does your update relate to?

    Human-readable name (eg WebSockets feature): OpenID Connect Client 1.0, Social Media Login 1.0

    Short feature name (eg websockets-1.0): openidConnectClient-1.0, socialLogin-1.0

  2. Who is the target persona? Who do you expect to use the update? eg application developer, operations.
    Server admins.

  3. Provide a summary of the update, including the following points:

    • A sentence or two that introduces the update to someone new to the general technology/concept.

    • What was the problem before and how does your update make their life better? (Why should they care?)

    • Briefly explain how to make your update work. Include screenshots, diagrams, and/or code snippets, and provide a server.xml snippet.

    • Where can they find out more about this specific update (eg Open Liberty docs, Javadoc) and/or the wider technology?

    OpenID Connect clients in Open Liberty now support the private_key_jwt client authentication method with OpenID Connect token endpoints. OpenID Connect clients are required to provide authentication data to the OpenID Connect provider when invoking the provider's token endpoint. Clients can authenticate using several different methods, but most of those methods require a client secret. The new private_key_jwt authentication method allows clients to make use of asymmetric keys to create signed JSON Web Tokens (JWTs) to authenticate instead of client secrets. OpenID Connect clients in Open Liberty using this authentication method are no longer required to have a client secret.

    Server administrators can enable this functionality using the new private_key_jwt option for the tokenEndpointAuthMethod attribute, as well as the new tokenEndpointAuthSigningAlgorithm and keyAliasName attributes in either the <openidConnectClient> or <oidcLogin> elements:

    <openidConnectClient tokenEndpointAuthMethod="private_key_jwt" keyAliasName="privatekeyaliasRS512" ... />
    <oidcLogin tokenEndpointAuthMethod="private_key_jwt" tokenEndpointAuthSigningAlgorithm="E512" keyAliasName="privatekeyaliasES512" ... />

    The tokenEndpointAuthSigningAlgorithm attribute specifies the signing algorithm to use to sign the JWT used for client authentication. The keyAliasName attribute points to the key to use to sign the JWT.

    More information about the Liberty configuration options can be found in the docs for the openidConnectClient element and the oidcLogin element. More information about private_key_jwt client authentication can be found in the OpenID Connect core specification and RFC 7523.

What happens next?

ayoho commented 1 year ago

For https://github.com/OpenLiberty/open-liberty/issues/21826

ayoho commented 1 year ago

Included in https://openliberty.io/blog/2023/06/13/23.0.0.6-beta.html#pkjwt