[ 
https://issues.apache.org/jira/browse/NIFI-1884?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15291004#comment-15291004
 ] 

ASF GitHub Bot commented on NIFI-1884:
--------------------------------------

Github user mcgilman commented on the pull request:

    https://github.com/apache/nifi/pull/452#issuecomment-220307255
  
    @alopresto Thanks for the very thorough review! This API is designed 
strictly for handling the persistence of access policies which would also 
include Users and Groups. These objects are designed as simple data objects or 
POJOs. While the MutableAuthorizer can load these records, it must be told when 
to save. It wouldn't know a given User/Group/Policy has been modified. This is 
part of the motivation to have the objects be immutable. The intent is very 
clear to an implementor of MutableAuthorizer that the objects won't be modified 
outside of their knowing. I believe that @bbende recommendation of introducing 
a Builder for creating new versions of a given User/Group/Policy is a great way 
to handle the cloning.
    
    The end goal here was to design the API such that the implementation only 
needed to be concerned with persistence.
    
    **uniqueness constraint** - How we address this would ultimately be based 
on whether we support reloading the Users/Groups/Policies while the application 
is running. We decided against this as the motivation for the MutableAuthorizer 
API was to support an Authorizer that was managed by NiFi. With this approach 
we would be enforcing uniqueness at startup and when new records were added 
outside of the MutableAuthorizer.
    
    **ID mutability** - The identifier of a record is not mutable. The identity 
of a user and name of a group are (using the clone/builder approach described). 
This is to more easily support name chanes or typos without having to re-create 
all the policies for that entity as well.
    
    **locks & merge conflicts** - Thread locking is handled by the web tier 
using the same mechanism as the other Resources. For 1.0.0 we are introducing 
fine grain locking through a RevisionManager. Obtaining a write lock for a 
given record would require a client to include a Revision. The RevisionManager 
manager would validate the Revision and lock the Revision to prevent other 
clients from modifying the same record.
    



> Add User & Group API
> --------------------
>
>                 Key: NIFI-1884
>                 URL: https://issues.apache.org/jira/browse/NIFI-1884
>             Project: Apache NiFi
>          Issue Type: Sub-task
>          Components: Core Framework
>            Reporter: Bryan Bende
>            Assignee: Bryan Bende
>            Priority: Minor
>             Fix For: 1.0.0
>
>
> Define the API for  managing users, groups, and policies.
> This is to advance the work described in this feature proposal:
>  https://cwiki.apache.org/confluence/display/NIFI/Support+Authorizer+API
> The parent JIRA for all authorization work is NIFI-1550.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to