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

Johny Rufus commented on FLUME-2631:
------------------------------------

Since the client api will be exposed via flume-ng-auth, we need more detailed 
specifics as to what should be exposed.
Based on some internal discussions with Hari, Ryan we came up with the 
following structure for the client api.

Only Exposed public Class + Api 
-------------------------------------

Authenticator.get() - static
Authenticator getExecutor(), getExecutorAs() - instance methods

Executor executePrivileged (action + exception action)  - instance methods


Authenticator:
-------------------
static method: 
1. Authenticator.get(principal, keytab) : Authenticator
Returns either of the two singletons SimpleAuthenticator or 
KerberosAuthenticator based on inputs 
Instance methods: 
2. getExecutor() : Executor
returns  SimpleExecutor or UgiExecutor , based on which Authenticator it was 
called on

getExecutorAs(proxyUserName) : Executor
returns UgiExecutor

Executor
------------
executePriviliged (one for action , one for exceptionaction)


Class Hierarchy:
----------------------

Authenticator  (Exposed abstract base class)
SimpleAuthenticator extends Authenticator (private)
KerberosAuthenticator extends Authenticator (private)

Executor(Exposed i/f)
SimpleExecutor extends Executor (private)
UgiExecutor extends Executor (private)



> End to End authentication in Flume 
> -----------------------------------
>
>                 Key: FLUME-2631
>                 URL: https://issues.apache.org/jira/browse/FLUME-2631
>             Project: Flume
>          Issue Type: New Feature
>          Components: Sinks+Sources
>            Reporter: Johny Rufus
>            Assignee: Johny Rufus
>             Fix For: v1.6.0
>
>         Attachments: FLUME-2631-1.patch, FLUME-2631.patch
>
>
> 1. The idea is to enable authentication primarily by using 
> SASL/GSSAPI/Kerberos with Thrift RPC. [Thrift already has support for SASL 
> api that supports kerberos, so implementing right now for Thrift. For Avro 
> RPC kerberos support, Avro needs to support SASL first for its Netty Server, 
> before we can use it in flume]
> 2. Authentication will happen hop to hop[Client to source, intermediate 
> sources to sinks, final sink to destination]. 
> 3. As per the initial model, the user principals won’t be carried forward. 
> The flume client[ThriftRpcClient] will authenticate itself to the KDC. All 
> the intermediate agents [Thrift Sources/Sinks] will authenticate as principal 
> ‘flume’ (typically, but this can be any valid principal that KDC can 
> autenticate) to each other and the final agent will authenticate to the 
> destination as the principal it wishes to identify to the destination



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

Reply via email to