I have one comment on the Security Considerations section and several
comments on the Privacy Considerations section.
*Security Considerations section(Section 5)
*
The intent of this comment is to add information, but not to change the
meaning.
Current text:
The JWT access token data layout described here is very similar to
the one of the id_token as defined by [OpenID.Core].
The explicit typing required in this profile, in line with the
recommendations in [RFC8725] helps the resource server to distinguish
between JWT access tokens and OpenID Connect ID Tokens.
Proposed text:
The JWT access token data layout described here is very similar to
the one of the id_token as defined by [OpenID.Core].
The explicit typing required in this profile (i.e. "at+jwt", see
section 2.1), in line with the recommendations in [RFC8725] helps
the resource server to distinguish between JWT access tokens (i.e. "
jwt") and OpenID Connect ID Tokens (i.e. either "jwt" or "json").
*Privacy Considerations section(Section 6)
*
Current text:
As JWT access tokens carry information by value, it now becomes
possible for clients and potentially even end users to directly peek
inside the token claims collection.
The client MUST NOT inspect the content of the access token: the
authorization server and the resource server might decide to change
token format at any time
(for example by switching from this profile to opaque tokens) hence
any logic in the client relying on the ability to read the access
token content would break without recourse.
The OAuth 2.0 framework assumes that access tokens are treated as
opaque by clients.Administrators of authorization servers should
also take into account
that the content of an access token is visible to the
client.Whenever client access to the access token content presents
privacy issues for a given scenario,
the authorization server should take explicit steps to prevent it.
Rational for a change:
The following sentence at the beginning of the second paragraph is correct:
"The OAuth 2.0 framework assumes that access tokens are treated as
opaque by clients".
The current first sentence says that it is possible to directly peek
inside the token claims collection. This is indeed possible /in the
context of this RFC/
(/i.e. not in general/) since that client is able to test if a "typ"
header parameter exists and if it contains the value " at+jwt".
It is sufficient to warn the reader that such peeking is not possible in
general, but is possible when/if the previous two conditions are satisfied.
Before proposing a text replacement, if we were using sub-paragraphs for
addressing the different topics, the text would be more readable:
6.1. Peeking inside the token claims collection
6.2. End-user identifier correlation
6.3. AS tracking
Let us start with the last one (6.3). An email sent by Vittorio Bertocci
on 2020-04-29 states in its last sentence:
" I’ll try to come up with concise language that clarifies to the
reader that the current mechanism does allow AS tracking".
See:
https://mailarchive.ietf.org/arch/msg/oauth/x2Xvd14hREBoYKEZ1h0bDsPRGKM/
However, no sentence has been added to address this warning. This
explains why I propose the following text :
6.3. AS tracking
Since an "aud" claim parameter is included by the AS inside every
access token, the AS is in a position to know
and trace where each access token is likely to be used. In addition,
if token introspection is used by the RS,
this allows the AS to know and trace exactly where and when each
access token has been used.This may be
a privacy concern for some end-users.
Let us come back to the three previously quoted paragraphs.
Proposed text replacement:
6. Privacy Considerations
6.1. Peeking inside the token claims collection
JWT access tokens issued under this profile include in the "typ"
header parameter of an access token the value "at+jwt"
to explicitly declare that the JWT represents an access token
compliant to this profile. This information allow RSs to know
if they receive an access token compliant to this profile.
The OAuth 2.0 framework assumes that access tokens are treated as
opaque by clients.
Nevertheless, when a client gets back an access token from an AS, if
the value "at+jwt" is present in the "typ" header parameter
of that access token, as such access tokens carry information by
value, it is possible for clients and potentially even end users
to directly peek inside the token claims collection.
However, the AS and the RS might decide to change the token format
at any time (for example by switching from this profile to opaque
tokens)
hence any logic in the client relying on the ability to read the
access token content would break without recourse.As a consequence,
clients
should not expect to be always able to inspect the content of access
tokens.
Furthermore, this profile does not allow a client to request an
access token format conformant to this profile.
Administrators of authorization servers should take into account
that the content of an access token is visible to the client.
If this is a concern for the AS, it should take explicit steps to
prevent it.
The three paragraphs that come after can remain unchanged. To be
explicit, here they are:
In scenarios in which JWT access tokens are accessible to the end
user, it should be evaluated whether the information can be accessed
without privacy violations (for example, if an end user would simply
access his or her own personal information) or if steps must be taken
to enforce confidentiality.
Possible measures to prevent leakage of information to clients and
end users include: encrypting the access token, encrypting the
sensitive claims, omitting the sensitive claims or not using this
profile, falling back on opaque access tokens.
In every scenario, the content of the JWT access token will
eventually be accessible to the resource server.It’s important to
evaluate whether the resource server gained the proper entitlement to
have access to any content received in form of claims, for example
through user consent in some form, policies and agreements with the
organization running the authorization servers, and so on.
The next and last original paragraph is addressing another topic. It
starts with the following sentence:
"This profile mandates the presence of the "sub" claim in every JWT
(...) ".
A key sentence is the following: " The "sub" claim should be populated
by the authorization servers according to a privacy impact assessment ".
This sentence does not provide a sufficient guidance. It is important to
mention that there exists three options for the "sub" claim:
* a globally unique identifier,
* a resource server specific identifier, or
* an access token specific identifier.
and then, although no specific parameter has been defined to allow the
client to choose between these three options,
it is possible for an AS to allow such a choice using the "scope" parameter.
Proposed text replacement for the last original paragraph:
6.2. End-user identifier correlation
This profile mandates the presence of the "sub" claim in every JWT
access token. The "sub" claim is defined in RFC 7519 (section 4.1.2)
in the following way:
"The subject value MUST either be scoped to be locally unique in the
context of the issuer or be globally unique."
When the subject value is scoped to be globally unique, it is
possible for every RS to use that information for correlating
incoming requests
with data stored locally for the authenticated principal with
different RSs. It is also possible for servers that are not resource
servers (RSs)
but which use the same globally unique identifiers for correlating
stored data.
Although the ability to correlate requests and stored data might be
required by design in some scenarios, there are scenarios where such
correlation is not desirable.
In such scenarios, the AS may use an identifier that is locally
unique in the context of the issuer: it may be unique either for
every RS or for every access token :
- In order to prevent tracking principal activities across multiple
resource servers, the authorization server should ensure that JWT
access tokens meant
for different resource servers have distinct "sub" values
that cannot be correlated in the event of resource servers collusion.
- In order to prevent a resource server from correlating the
principal’s activity within the resource itself, the authorization
server should assign different "sub" values
for every JWT access token issued.In turn, the client
should obtain a new JWT access token for every call to the resource
server, to ensure that the resource server
receives different "sub" and "jti" values at every call,
thus preventing correlation between distinct requests.
This profile does not define a specific parameter that allows a
client or an end-user to choose between these three options for the
"sub" claim parameter:
* a globally unique identifier (that allows correlations between
RSs and beyond),
* a resource server specific identifier (to prevent correlations
between RSs and beyond), or
* an access token specific identifier (for anonymous accesses to
one or more RSs).
The choice between these three options for the "sub" claim parameter
is managed by the AS.
However, if the AS supports a "scope" parameter in the access token
request, it is possible for the AS to define different scopes that
support one or more of these options.
Alternatively, an AS may use one of these options for all its
end-users or some of them on a per-user basis. In addition, such a
choice may depend on the RS being accessed.
Denis
The IESG has received a request from the Web Authorization Protocol WG
(oauth) to consider the following document: - 'JSON Web Token (JWT) Profile
for OAuth 2.0 Access Tokens'
<draft-ietf-oauth-access-token-jwt-11.txt> as Proposed Standard
The IESG plans to make a decision in the next few weeks, and solicits final
comments on this action. Please send substantive comments to the
last-c...@ietf.org mailing lists by 2021-02-09. Exceptionally, comments may
be sent to i...@ietf.org instead. In either case, please retain the beginning
of the Subject line to allow automated sorting.
Abstract
This specification defines a profile for issuing OAuth 2.0 access
tokens in JSON web token (JWT) format. Authorization servers and
resource servers from different vendors can leverage this profile to
issue and consume access tokens in interoperable manner.
The file can be obtained via
https://datatracker.ietf.org/doc/draft-ietf-oauth-access-token-jwt/
No IPR declarations have been submitted directly on this I-D.
_______________________________________________
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