merlimat opened a new pull request #1913: Link internal C++ authentication 
plugins inside client library
URL: https://github.com/apache/incubator-pulsar/pull/1913
 
 
   ### Motivation
   
   It is quite complicated to enable authentication in client library from 
Python or Golang wrappers. The primary reason for this is that authentication 
is based on plugins which are compiled as `.so` library and loaded at runtime. 
   
   While this is convenient for extensibility, having the internally supplied 
authentication supplied as plugins complicates the distribution of wrappers 
based on C++ client lib. 
   
   In Python, the library is distributed as a "wheel" file that contains both 
the Python code and a library that contains Pulsar C++ client library, Python 
bindings and all the dependencies for Pulsar client, statically linked, in 
order to have a self-contained file that will work on any system with no 
external dependencies. 
   
   In Go, we link against `libpulsar.so` (that will need to be installed in the 
system through either Homebrew, RPM or DEB packages), but having to also 
include `tls.so` and have users figure out where that file is doesn't make for 
a good experiences.
   
   ### Modifications
   
    * Include TLS and Athenz authentication in `libpulsar.so`, accessible from 
code. Eg: 
   ```cpp
   pulsar::AuthTls::create("my-cert.pem", "my-private.key");
   ```
    * Plugin system for loading external custom authentication schemes is still 
available.
   ### Result
   
    * We can have self-contained wrapper binaries with language native way to 
configure authentication.
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to