[Openid-specs-ab] OpenID Connect: Explicitly typed ID tokens and UserInfo

Vladimir Dzhuvinov vladimir at connect2id.com
Tue Mar 29 17:41:32 UTC 2022


I agree this is a good and sensible approach. I like the rework 
argument, as a mean to nudge people in the right direction :)

Regarding CIBA login_token_hint, in some ways it can be more dangerous 
that a plain login hint or even an id_token_hint, because it may get 
implemented as a semi permanent token that links the user & their authN 
device to the IdP. For web based IdP this binding is facilitated by a 
session cookie in the browser, but in a CIBA app this binding and the 
login hint may get conflated. One also has to be careful not to leak 
private data to the RP via the login_hint_token - I've seen one such 
implementation attempt (but that's another topic).

Vladimir Dzhuvinov

On 29/03/2022 19:38, Vittorio Bertocci wrote:
> Thanks Vladimir for the extra context!
> Excluding the hint cases (it's a hint, hence not a credential - in the 
> same mental space as login_hint for me),all the other cases would seem 
> solvable by using a specific audience (hence an access token) rather 
> than an IDtoken. I understand that the existing logic is using an 
> IDtoken, but in order to handle the stronger type you'd need to change 
> processing logic anyway- hence it seem at least a theoretical 
> possibility to go even further and change to an AT directly :) what do 
> you think?
>
> On Tue, Mar 29, 2022 at 9:27 AM Vladimir Dzhuvinov 
> <vladimir at connect2id.com> wrote:
>
>     *This message originated outside your organization.*
>
>
>     ------------------------------------------------------------------------
>
>     Hi Vittorio,
>
>     The mentioned use cases I know of:
>
>       * Resource servers with access tokens that don't conform to RFC 9068
>
>       * Implementations of token exchange
>
>       * Implementations of the login_hint_token in CIBA, which may be
>         issued by the OP or some other service and therefore can take
>         any shape
>
>     One strong argument for this explicit typing has been to make it
>     harder to swap or mix up tokens when developers implement JWT
>     processing logic at some endpoint and we all make the occasional
>     bug :) So this explicit typing was thought as extra defense
>     against design and coding mistakes.
>
>     There is a third OIDC specific JWT that I didn't mention - the
>     back-channel logout token. According to the SET RFC 8417 it can
>     carry a "secevent+jwt" header, but I realised the current OIDC
>     logout spec doesn't mention whether that's required or allowed.
>
>     Vladimir
>
>     Vladimir Dzhuvinov
>
>     On 29/03/2022 18:24, Vittorio Bertocci wrote:
>>     Hi Vladimir!
>>     We introduced explicit typing in the JWT access token profile -
>>     in theory, that should be enough to distinguish as in all other
>>     JWTs floating in OIDC are either IDtokens or don't strictly
>>     require signature validation (eg userinfo ones coming from a
>>     direct connection rather than redirects).
>>     What are the use cases where the extra info you are embedding
>>     there leads to different processing logic?
>>     thanks
>>     V.
>>
>>     On Tue, Mar 29, 2022 at 8:20 AM Vladimir Dzhuvinov via
>>     Openid-specs-ab <openid-specs-ab at lists.openid.net> wrote:
>>
>>         *This message originated outside your organization.*
>>
>>
>>         ------------------------------------------------------------------------
>>
>>         The classic OIDC appears to be no longer the hot topic here,
>>         but I want to inform the WG that after resisting pressure
>>         from users for some time we recently started supporting
>>         explicitly typed ID tokens and UserInfo JWTs, the rationale
>>         being the prevention of mix ups in applications with many
>>         types of JWTs floating around, plus making it easier for code
>>         and people to determine the JWT purpose by simply examining
>>         the "typ" (type) header and not having to analyze the claims
>>         structure.
>>
>>         By explicit JWT typing I mean use of the optional "typ"
>>         header in a JWT, something the JWT profile for access tokens
>>         for instance uses (and other OAuth related specs that carry
>>         JWTs).
>>
>>         |{ "kid" : "1", "alg" : "RS256", "typ" : "id_token+jwt" }|
>>
>>         |{ "kid" : "1", "alg" : "RS256", "typ" : "userinfo+jwt" }|
>>
>>
>>         I know this is non-standard and may likely break existing
>>         validation code and client libraries. If you have thoughts or
>>         feedback about this typing, good or bad, I'd love to hear it.
>>
>>         Vladimir
>>
>>         -- 
>>         Vladimir Dzhuvinov
>>
>>         _______________________________________________
>>         Openid-specs-ab mailing list
>>         Openid-specs-ab at lists.openid.net
>>         https://lists.openid.net/mailman/listinfo/openid-specs-ab
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openid.net/pipermail/openid-specs-ab/attachments/20220329/6ef8785b/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4007 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.openid.net/pipermail/openid-specs-ab/attachments/20220329/6ef8785b/attachment.p7s>


More information about the Openid-specs-ab mailing list