Hi Dimuthu, I am sorry for the late reply. I thought I play around this first and reply to your email but I got busy during the weekend and did not get a chance to experiment around this. Therefore, I do not want to hold you on this anymore.
Here is what I had in mind: Custos provides the following functionalities: 1. Delegate science gateway authentication 2. Provide transparent resource authentication to science gateways 3. Provide sharing/multi-tenancy functionalities (what is already in Airavata) To provide some of these functionalities we need an identity server like Keycloak. So there are two ways we can integrate Keycloak with Custos: 1. As an external service, 2. As an embedded server running inside Custos server. We had different opinions about these two approaches, however, I favored the second approach as it simplifies the deployment complexity (and I guess Suresh favored the first approach). The issue with the second approach is there is no straightforward way to run Keycloak inside Tomcat as an embedded server. There are a couple of blog posts saying that it is possible however, I did not get enough time to successfully run them (theoretically this is possible). So, back to your question about the structure. Assuming we take the first approach (deploy Keycloak as an external server), I would imagine the directory structure would be something similar to the following: modules - custos-connectors (Connectors to connect to Keycloak or any other identity server) - custos-authentication (Delegated authentication) - custos-authorisation - custos-resource-authentication (Resource authentication e.g., Amazon, Google clouds, SSH etc) - custos-sharing (Airavata sharing) - custos-credential-store - custos-dist (Distribution + tomcat server) - custos-client (Custos client library which will be used by science gateways) - custos-test (Integration tests) If we use the second approach, in addition to above modules, we will have a module called "custos-server" which includes changes to embed keycloak within Tomcat. In either case, the above-described structure is not static, it's just a starting point. We definitely need to re-organize as we develop functionality. Thanks Best Regards, Thejaka Amila Kanewala, PhD https://github.com/thejkane/agm On Sun, Jun 16, 2019 at 9:17 PM DImuthu Upeksha <[email protected]> wrote: > Hi Folks, > > Is there a decided module structure for the project? If you have any > suggestion, please let me know. I'm working on refactoring credential store > to support multiple protocols (SSH, S3, Azure, Box and etc) and I believe > that this might me useful for Custos as well. > > Thanks > Dimuthu > --
