On 04/01/19 11:37, Ciusso Hb wrote:
Ok, simple like that...
Sorry, I was misled by this line "AuthContextUtils.getAuthorizations().keySet().contains(StandardEntitlement.REALM_LIST);". With a rapid check, I thought that was used to check if a user could get the list of realms, but is used to get full data of realms.

So authenticated user can get all realms list with basic data, and administrators (or users having REALM_LIST entitlement) could get realms list with all associated data (Account and Password policies, Actions, Templates and Resources).
Correct?

Correct.

Regards.

On Fri, Jan 4, 2019 at 11:01 AM Francesco Chicchiriccò <[email protected] <mailto:[email protected]>> wrote:

    On 04/01/19 10:58, Ciusso Hb wrote:
    Hi Francesco, good to know about the segregation of realms and
    the code seems pretty clear.

    But with version 2.1.3-SNAPSHOT I've created a "simple" user
    without any Entitlements and, via Swagger, called the realms
    endpoint, passing his credential.
    The method returned a list with all the realms when I expected a 403.

    Why? The method [1] is annotated as

    @PreAuthorize("isAuthenticated()")

    This means that any authenticated user is allowed to invoke the
    method.

    Regards.

    On Fri, Jan 4, 2019 at 9:42 AM Francesco Chicchiriccò
    <[email protected] <mailto:[email protected]>> wrote:

        On 04/01/19 09:27, Ciusso Hb wrote:
        > Hi all, I've noticed that the "/realms" REST endpoint need
        > authentication, but is callable without "REALM_LIST"
        entitlements, is
        > this by design?

        Hi,
        it is not exactly like this: since one admin can own
        REALM_LIST on a
        folded realm but not on its parent realms, the behavior will
        return
        restricted realms when non-admin, and full-fledged realms
        when admin.

        Such behavior is implemented by [1] and [2].

        > Furthermore, the list of realm returned start from the root
        (not only
        > from the realm of the user calling the method).
        >
        > The "/domains" REST endpoint seems to have a similiar
        behavior: return
        > 200 OK with an empty list, but in this case, I think is
        intentional
        > because the domain could be used to log in.

        Yep, correct.

        Regards.

        [1]
        
https://github.com/apache/syncope/blob/master/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java#L73-L86
        [2]
        
https://github.com/apache/syncope/blob/master/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java#L219-L246

--
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/

Reply via email to