Vittorio, one comment in line.
It’s certainly possible to conceive ATs without subs, but I think the profile would be way less useful for SDK developers.
On the objections:
The sub doesn’t have to be a user, if you look at the earlier discussions the case in which the token has been issued for an application via client creds (hence non user) has been debated at length. Knowing the subject does not necessarily lead to API being able to collide and track users, given that the sub can be a PPID that is different for every resource even if the authenticated subject was the same.

The sub is mandatory here because it was present in nearly every token among the ones observed, and although one should not overindex on those scenarios, I took that as strong indication that it is a frequently used field and guaranteeing its presence facilitates embedding in SDKs lots of downstream features, such as correlating with locally stored attributes, which would otherwise left as exercise to the reader. Per the points above, there are no obvious downsides in requiring the presence of the sub and significant upsides. Again, the AS is in full control of the sub content hence none of the privacy concerns mentioned here are mandated by the sheer presence of the sub claim.

If you feel the privacy section should be stronger in warning an AS against the possibility of collusion if global ide rockers [identifiers] are used, I am happy to reword accordingly.

Text needs to added into the Privacy consideration section stating more than that.

Since RFC 7519 (4.1.2) states:

    The subject value MUST either be scoped to be *locally unique* in the context of the issuer *or* be *globally unique*.

the presence of the sub claim in a JWT allows (1) different resource servers to perform correlations of actions performed by the same subject on these different resource servers and (2) a single resource server to perform inter-API correlations of actions performed by the same subject. Since a single claim parameter is being used, it is not possible to have only one of the two previous cases.

Denis


On Mon, Apr 13, 2020 at 10:16 Aaron Parecki <aa...@parecki.com <mailto:aa...@parecki.com>> wrote:

    This is a good point, I often use the hotel key analogy as well.
    The room door is the RS, the key is the access token, the door
    does not need to know who the user is in order to know if it’s
    okay to unlock given a particular key.

    If sub is required, then this profile is limited in use to cases
    where user identifiers are part of the system, and there will be
    situations in which it’s not appropriate to use this profile for
    access tokens. If that’s okay, this should be clarified in the
    overview section to describe when this profile should be used.

    Aaron



    On Mon, Apr 13, 2020 at 10:08 AM Dick Hardt <dick.ha...@gmail.com
    <mailto:dick.ha...@gmail.com>> wrote:

        Why does the "sub" need to be required?

        An access token is to prove authorization. The RS may not need
        "sub" to constrain fulfilling the client request.

        For example, it the access token has the same properties as a
        movie ticket, the RS does not need to have any identifier for
        who purchased the movie ticket.

        The privacy implication is the RS can correlate across API
        calls to know it is the same subject.




        On Mon, Apr 13, 2020 at 8:16 AM Denis <denis..i...@free.fr
        <mailto:denis.i...@free.fr>> wrote:

            Hello,

            More on privacy about "JWT Profile for Access Tokens".

            The current document REQUIRES the claim names *sub* and
            *client_id*.

              * sub  REQUIRED - as defined in section 4.1.2 of [RFC7519].
              * client_id  REQUIRED - as defined in section 4.3 of
                [RFC8693]

            *1) **sub  REQUIRED*

            RFC 7519 states:

                4.1.2.  "sub" (Subject) Claim
                   The "sub" (subject) claim identifies the principal
                that is the
                   subject of the JWT.  The claims in a JWT are
                normally statements
                   about the subject.  The subject value MUST either
                be scoped to**
                *be locally unique in the context of the issuer or be
                globally unique*.
                   The processing of this claim is generally
                application specific.  The
                   "sub" value is a case-sensitive string containing a
                StringOrURI
                   value. *Use of this claim is OPTIONAL.*

            If *sub *is *REQUIRED *for this profile, then this allows
            all resource servers to link accesses made by the same
            client on different servers.

            *2) client_id  REQUIRED*

            RFC 8693 states:

                4.3. "client_id" (Client Identifier) Claim
                The client_id claim carries the client identifier of
                the OAuth 2.0 [RFC 6749] client that requested the token.

            RFC 6749 states:

                2.2.  Client Identifier
                   The authorization server issues the registered
                client a client
                   identifier -- a unique string representing the
                registration
                   information provided by the client.  The client
                identifier is not a
                   secret; it is exposed to the resource owner and
                MUST NOT be used
                   alone for client authentication. *The client
                identifier is unique to**
                **   the authorization server.*

            If *client_id* is REQUIRED for this profile, this also
            allows all resource servers to link accesses made by the
            same client on different servers.

            *Both claim names should be OPTIONAL *to allow to support
            the privacy principle of unlinkability.

            Would both names remain *REQUIRED*, the Privacy
            considerations section should mention that such a linkage
            by different resource servers
            will always be possible when using this profile.

            Denis

            I have uploaded the second presentation for today's
            session, the JWT Profile for Access Tokens.
            
https://datatracker.ietf.org/meeting/interim-2020-oauth-04/session/oauth


            Regards,
             Rifaat


            _______________________________________________
            OAuth mailing list
            OAuth@ietf.org <mailto:OAuth@ietf.org>
            https://www.ietf.org/mailman/listinfo/oauth

        _______________________________________________
        OAuth mailing list
        OAuth@ietf.org <mailto:OAuth@ietf.org>
        https://www.ietf.org/mailman/listinfo/oauth

-- ----
    Aaron Parecki
    aaronparecki.com <http://aaronparecki.com>
    @aaronpk <http://twitter.com/aaronpk>

    _______________________________________________
    OAuth mailing list
    OAuth@ietf.org <mailto:OAuth@ietf.org>
    https://www.ietf.org/mailman/listinfo/oauth


_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to