geode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mario Kevo <mario.k...@est.tech>
Subject Certificate Based Authorization
Date Mon, 02 Dec 2019 09:29:50 GMT
Hi,



There is another potential functionality we would like to discuss and get some comments for.
The idea is TLS certificate based authorization. Currently, if a user wants secure communication
(TLS) + authorization, he needs to enable TLS and access control. The user also needs to handle
both the certificates for TLS and the credentials for access control. The idea we have is
to use both features: TLS and access control, but remove the need to handle the credentials
(generating and securely storing the username and password). Instead of the credentials, the
certificate subject DN would be used for authorization.



This would of course be optional. We would leave the possibility to use these 2 features as
they are right now, but would also provide a configuration option to use the features without
the need for client credentials, utilizing the certificate information instead.



For further clarity, here are the descriptions of how the options would work:



  1.  Using TLS and access control as they work right now
     *   Certificates are prepared for TLS
     *   A SecurityManager is prepared for access control authentication/authorization. As
part of this, a file (e.g. security.json) is prepared where we define the allowed usernames,
passwords and authorization rights for each username
     *   The credentials are distributed towards clients. Here a user needs to consider secure
distribution and periodical rotation of credentials.

Once a client initiates a connection, we first get the TLS layer and certificate check, and
right after that we perform the authentication/authorization of the user credentials.



  1.  TLS certificate based authorization
     *   Certificates are prepared for TLS
     *   A SecurityManager is prepared for access control authentication/authorization. As
part of this, a file (e.g. security.json) is prepared. In this case we don’t define the
authorization rights based on usernames/passwords but based on certificate subject DNs.
     *   There is no more need to distribute or periodically rotate the credentials, since
there would be none. Authorization would be based  on the subject DN fetched from the certificate
used for that same connection

Once a client initiates a connection, and when we get past the TLS layer, at the moment where
geode expects the credentials from the client connection, we just take the certificate subject
DN instead and provide it to the security manager for authorization.



This wouldn’t lower the level of security (we can have TLS enabled without access control
already), but would provide authentication without the hassle of username and password handling.



This is the basic description of the idea. There would be more things to consider, like multi
user authentication, but for now we would just like to get some initial feedback. If it is
considered useful, we could get into the details.


BR,

Mario


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message