Add JWE (Encrypted) support for UserInfo endpoint based on RP configuration #2287
Replies: 3 comments 1 reply
-
|
Hi @nandhu-kumar,
I believe using the existing JWKS/JWKS_URI for the JWE would be enough. We can reuse the existing OAuth-level cert we have in application config for this. Having a separate public PEM for this purpose would further complicate the config and key management and I see no additional benefit too. Further, DCR and other specs also propose JWKS/JWKS_URI only right?
Shall we have another response type for nested JWE. Let's have a separate config for user info related signing/encryption, since we may need to enforce them separately for ID token. DCR also follows this approach Additionally let's try to align the new application properties we introduce with the DCR spec wherever possible. We should also update the DCR side of this along with our application API implementation. And any reason for not introducing signing algorithm field? Better to have it for consistency for now and we can decide the algorithm negotiation when the support is there later. We should also update the discovery endpoint to expose the supported algorithms from Thunder for signing, encryption as per the spec. |
Beta Was this translation helpful? Give feedback.
-
|
@nandhu-kumar - Encryption protects secrecy, but it does not by itself prove who created the data — signatures are required for non-repudiation, so when JWE is enabled we must sign before encryption.
As @thiva-k mentioned, we should have nested JWE as another response type. Can we have deployment level restriction on which options are allowed as userinfo/ID-token type during app registration? As we may need to only allow JWS and Nested JWT. Also @thiva-k, Currently for what purpose is the application level certificate used? Current @nandhu-kumar |
Beta Was this translation helpful? Give feedback.
-
|
Hi @anushasunkada,
Currently is it not being used in runtime for anything. This was introduced for allowing app-specific signing/encryption of assertions if needed, which has not been implemented yet. Private key jwt, etc. uses oauth-level certificate. The DCR side is erroneously storing the cert in the app-level one instead of the oauth-level one currently.
I believe we support JWKS as of now. In private key JWT we are matching by |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Related Feature Issue
fixes #2372
New feature proposal extending existing JWS implementation
Problem Summary
Currently, Thunder supports UserInfo responses in JSON and JWS (signed) formats. However, there is no support for encrypted UserInfo responses (JWE), which are required in scenarios where sensitive user claims must be protected from intermediaries or unintended exposure.
Adding JWE support will enhance security by ensuring confidentiality of user claims in transit.
High-Level Approach
The proposal is to extend the existing UserInfo response handling to support a new response type: JWE.
Architecture Overview
1. Application Layer Changes
Extend UserInfoConfig to include encryption details:
2. Client Management API
Enhance application onboarding payload:
3. UserInfo Service
Extend existing flow:
Add new method:
Responsibilities:
4. Handler Layer
Reuse existing handler logic:
Set header:
Content-Type: application/jwtSecurity Considerations
Recommended initial support:
Consider enforcing:
Impacted Areas
Alternatives Considered
1. Only support JWS
2. Encrypt raw JSON without JWT
Questions for Community Input
Beta Was this translation helpful? Give feedback.
All reactions