----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/56474/#review165328 -----------------------------------------------------------
So now I remembered why originally it didn't support multiple authenticators. In my original design I favored composition of authenticators, in facto, I think one of the first iteration of the patches included an `AndAuthenticator` and an `OrAuthenticator`. Just consider that instead of implementing this inside libprocess, Mesos implement a combiner authenticator which works more or less like this: ```c++ class CombinedAuthenticator : public Authenticator { public: CombinedAuthenticator(const std::string &realm, const std::vector<Authenticator*> &authenticators); virtual Future<AuthenticationResult> authenticate(const Request& request) override; private: std::vector<Owned<Authenticator>> authenticators_; std::string realm_; }; CombinedAuthenticator::CombinedAuthenticator(const std::string &realm, const std::vector<Authenticator*> &authenticators) : authenticators_(), realm_(realm) { for (const Authenticator* authenticator, authenticators) { authenticators_.push_back(Owned<Authenticator>(authenticator)); } } Future<AuthenticationResult> CombinedAuthenticator::authenticate(const Request& request) { // ... The code inside AuthenticatorManagerProcess::authenticate() } ``` I personally would prefer this approach since it keeps the separation of [mechanism and policy](https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy), leaving users of libprocess to decide exactly how to perform authentication while the library itself only cares about a single interface. This is however just a peek in the considerations I had when I designed the multiple authenticators problem and I would suggest to only giving it a thought. - Alexander Rojas On Feb. 11, 2017, 1:44 a.m., Greg Mann wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/56474/ > ----------------------------------------------------------- > > (Updated Feb. 11, 2017, 1:44 a.m.) > > > Review request for mesos, Alexander Rojas, Jan Schlicht, Till Toenshoff, and > Vinod Kone. > > > Bugs: MESOS-7004 > https://issues.apache.org/jira/browse/MESOS-7004 > > > Repository: mesos > > > Description > ------- > > This patch updates the `AuthenticatorManager` to allow > multiple authenticators to be set for a single realm. > > > Diffs > ----- > > 3rdparty/libprocess/src/authenticator_manager.cpp > a22acd026a001788dc39b8005a56577e33c6800b > > Diff: https://reviews.apache.org/r/56474/diff/ > > > Testing > ------- > > Testing information can be found in the subsequent patch in this chain. > > > Thanks, > > Greg Mann > >