Grant anchor

Issue #326 resolved
Francis Pouatcha created an issue

A grant (identified by a grant_id) shall be a resource associated with the user.

  1. At creation, the authorization server will allow the originating client to specify the visibility of the grant:

    1. CREATING_CLIENT
    2. ANY_CLIENT
    3. ListOfClients
  2. API shall also allow the originating client to specify corresponding access mode on a per client basis (read, manage, …)

Comments (11)

  1. Torsten Lodderstedt

    I understand 1 and 3 but consider 2) as really dangerous. What is the rationale for this option?

  2. Francis Pouatcha reporter

    Here is the rationale behind ANY_CLIENT

    The grant is a possession of the user. Grant wont be accessed without an authenticated user token. A user willing to use any_sort_of_client to view this grant shall be allowed to do so.

    Protection is covered by the user access token.

  3. Torsten Lodderstedt

    What do you mean with “The grant is a possession of the user.“? A grant is maintained at the AS and is the underpinning of access tokens issued to clients. A user won’t know the id of a grant. So if one client shares the grant id with another client (probably inadvertent via leakage), this client can access the resources covered by this grant without further notice (no consent required). If this is combined with SSO at the AS, there is not even a user authentication happening.

    What is the use case for this unlimited sharing of grants?

    The only use case I see for grant sharing is, if a certain legal entity has multiple client_ids, e.g. for different apps. Since a consent (grant) is given for a certain legal entity, sharing the grant among technical clients for the same legal entity is fine.

    Every other client shall acquire a dedicated consent (grant).

  4. Francis Pouatcha reporter

    What do you mean with “The grant is a possession of the user.“?

    A GRANT is a RESOURCE and the RO is the user.

    The visibility of the GRANT as I refer above is related to management of the GRANT and not to the entitlement provided by the GRANT.

    What is the use case for this unlimited sharing of grants?

    I am not relating to GRANT sharing, but to the access to a GRANT for the purpose of managing that GRANT.

    The only use case I see for grant sharing is, if a certain legal entity has multiple client_ids, e.g. for different apps. Since a consent (grant) is given for a certain legal entity, sharing the grant among technical clients for the same legal entity is fine.

    GRANT sharing as you mention here refers to the entitlement contained in the GRANT. This is strongly dependent on the GRANT use case. I am not sure this shall be part of a GRANT. management API.

  5. Torsten Lodderstedt

    Just to make sure I understand correctly. You are talking about what client is allowed to read or revoke a grant. You are not talking about what client is entitled to obtain access tokens based on that grant. Correct?

  6. Francis Pouatcha reporter

    You are talking about what client is allowed to read or revoke a grant.

    I am talking about what client the user can use to revoke a grant, yes.

    You are not talking about what client is entitled to obtain access tokens based on that grant. Correct?

    Yes…

  7. Torsten Lodderstedt

    Ok.

    I assume the client is supposed to specify the other clients in the authorization request. Since this is a unprotected request through the browser, the client list can be modified in transit, allowing an attacker to add his client to the list. I see the following countermeasures:

    • a per client_id whitelist in order to limit the value range
    • signed request objects to protect the request in transit
    • PAR for the same purpose

    I still don’t understand why any client shall be allowed to read and revoke a certain grant. Can you please explain?

  8. Log in to comment