Hi Jaimandeep,

I disagree with both of your points. See my comments inline.

Best regards,
Karsten

On 12.08.2022 05:40, Jaimandeep Singh wrote:
Hi Mikheil,
1. Well explained by Brain. I will just add my perspective.

    >From the practical perspective, if the confidential client got a
    refresh
    token for the offline access and sufficient time (e.g., for a
    month), this
    would be quite impractical and not very user-friendly to ask a lot
    of users
    to give consents again when the confidential client wants to
    upgrade its
    certificate. But seems like software vendors did not interpret the
    RFC that
    way.

For confidential clients, authorization code flow is recommended. It is a two step process. In the first step you get the authorization code when the user provides his/her consent. In the second step you use this authorization code along with client credentials to obtain access tokens and refresh tokens. If the refresh token expires either due to expiry of its lifetime or certificate, it only needs to follow step two. So, the question of asking for consent again does not arise unless the authorization code itself has limited lifespan.

IMHO authorization codes should always be implemented as one-time-use tokens. Even when there is a grace period allowing a client to redeem a code a second time (e.g., in case of network failure) this period should be very short - much shorter than the validity of refresh tokens in practice.

If the refresh token is expired, the client should start a new authorization flow and ask the user for consent again unless the AS provides a way for users to grant access for clients "permanently".


2.

    While RFC 8705 indeed requires binding refresh token to the
    certificate in
    case of the public clients in Section 4 and Section 7.1

The RFC 8705 talks about public clients and refresh tokens in the same breath and seems to have legitimized the use of refresh tokens for public clients. However, if we look at the original OAuth 2.0 specifications RFC 6749, Section 4.2, talks about implicit grant optimized for public clients. It does not support issuing refresh tokens by AS in the first place. I think there is a need to deliberate on this issue in the next update / errata  for RFC 8705.

RFC 6749 is much older than RFC 8705. Both drafts "OAuth 2.0 Security Best Current Practice" (hopefully soon to be finished) and OAuth 2.1 deprecate issuing access tokens from the authorization endpoint (which is more or less the implicit grant). Today's best practice is to use the authorization code grant for both confidential and public clients. Therefore, I do not think there is a need for an updated RFC replacing 8705.



Regards and Best Wishes
Jaimandeep Singh


On Thu, Aug 11, 2022 at 11:46 PM <mikh...@association.ge> wrote:

    Hi Brian,

    Thanks for the prompt response. We will work with our vendors to
    get this done according to the RFC.

    Best Regards,
    Mikheil Kapanadze

    From: Brian Campbell <bcampb...@pingidentity.com>
    Sent: ხუთშაბათი, 11 აგვისტო, 2022 21:04
    To: mikh...@association.ge
    Cc: oauth@ietf.org
    Subject: Re: [OAUTH-WG] Certificate-bound refresh tokens and
    certificate expiration handling in case of the confidential clients

    Hi Mikheil,

    Your assumption is the correct reading of the RFC. Or the intent
    of the RFC anyway. For confidential clients, refresh tokens are
    bound to the client id (not the certificate thumbprint or anything
    else for that matter).

    RFCs can't be changed after publication so adding more
    clarification isn't really possible.



    On Thu, Aug 11, 2022 at 9:11 AM <mailto:mikh...@association.ge> wrote:
    Hi,

    I have noticed is that some OAuth2 AS implementations use certificate
    thumbprints to bind not only access tokens but also refresh tokens
    to client
    certificates. This happens for both public and confidential
    clients. As a
    result, when the certificate is replaced (e.g., it is about to
    expire soon),
    both access and refresh tokens are drawn unusable.

    While RFC 8705 indeed requires binding refresh token to the
    certificate in
    case of the public clients in Section 4 and Section 7.1, the
    wording is not
    that explicit for the confidential clients. More specifically,
    Section 7.1
    of the RFC 8705 is worded in a way which does not explicitly deny
    keeping
    refresh tokens alive after certificate change: it talks about
    binding to
    client ID, thus binding "indirectly" to the certificate. Also,
    Section 6.3
    requires access tokens to be invalidated after certificate change and
    mentions refresh tokens as typical tools for renewing them.

    >From the practical perspective, if the confidential client got a
    refresh
    token for the offline access and sufficient time (e.g., for a
    month), this
    would be quite impractical and not very user-friendly to ask a lot
    of users
    to give consents again when the confidential client wants to
    upgrade its
    certificate. But seems like software vendors did not interpret the
    RFC that
    way.

    So, the questions:
    1) Is my assumption correct and it will not be a violation of the
    RFC if
    refresh tokens issued to the confidential clients survive
    certificate change
    (e.g., by binding them to Client ID, not the certificate thumbprint)?
    2) If the answer on the 1st question is “yes”, would it be better
    to provide
    more clarification in the section 7.1 to avoid misinterpretations
    in the
    future?

    Best Regards,
    Mikheil Kapanadze



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

    CONFIDENTIALITY NOTICE: This email may contain confidential and
    privileged material for the sole use of the intended recipient(s).
    Any review, use, distribution or disclosure by others is strictly
    prohibited.  If you have received this communication in error,
    please notify the sender immediately by e-mail and delete the
    message and any file attachments from your computer. Thank you.

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


--
Regards and Best Wishes
Jaimandeep Singh
LinkedIn <http://www.linkedin.com/in/jaimandeep-singh-07834b1b7>

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

--
Karsten Meyer zu Selhausen
Senior IT Security Consultant
Phone:  +49 (0)234 / 54456499
Web:    https://hackmanit.de  | IT Security Consulting, Penetration Testing, 
Security Training

Is your OAuth or OpenID Connect application vulnerable to mix-up attacks? Find 
out more on our blog:
https://www.hackmanit.de/en/blog-en/132-how-to-protect-your-oauth-client-against-mix-up-attacks

Hackmanit GmbH
Universitätsstraße 60 (Exzenterhaus)
44789 Bochum

Registergericht: Amtsgericht Bochum, HRB 14896
Geschäftsführer: Prof. Dr. Jörg Schwenk, Prof. Dr. Juraj Somorovsky, Dr. 
Christian Mainka, Prof. Dr. Marcus Niemietz
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to