RCauth Delegation Server & MasterPortal - Building from Source
Introduction
Both Master Portal and Delegation Server are built on top of the OA4MP upstream project written in Java. As also stated in the Prerequisites run time only Java 1.8 from Oracle/Sun is supported. Older java version and OpenJDK are not supported!
For building, (Open)JDK 8 and 11 are both tested.
All projects are built using Maven. The currently tested versions are 3.5 and 3.6. If you are using Maven from the command line, make sure to set it up such that it would recognize the correct java version. You can easily do this by setting JAVA_HOME in your ~/.mavenrc as such:
export JAVA_HOME=<path to jdk 1.8>
Working with Eclipse and IntelliJ
In case you are doing some development work on the project, you might want to use an IDE for convenience. If you're only building the project the command line maven will be the easier way to go.
Good IDEs to use are Eclipse or IntelliJ. IntelliJ works pretty much without further adaptations. Just make sure to use an appropriate OpenJDK.
When working with Eclipse you will need a couple of plugins in order to build the code:
- Maven SCM Handler for EGit
- m2e - Maven Integration for Eclipse
- m2e connector for build-helper-maven-plugin
Make sure that Eclipse is working with the right java version! You can change the default java version by navigating to Window -> Preferences -> Installed JREs. Change the default java version before adding the project to the workspace, otherwise the project will be configured to use the old default. After doing the first time configuration from above you can check out the project into your workspace with File -> Import -> Maven -> Check out Maven Projects from SCM and following the instruction on the screen. Happy coding!
Rebuilding from source
Dependencies
Both the MasterPortal and Delegation Server require two dependencies to be built first: security-lib and OA4MP. You need to build and install the RCauth flavour of both before building the MasterPortal or Delegation Server.
background
The upstream OA4MP implementation can be found as two github repositories on the National Center for Supercomputing Applications organization, in particular Open Authorization for MyProxy (OA4MP) with a parent project security-lib. These two project also stand at basis of the CILogon project. We forked both projects as OA4MP and security-lib to complete them with (among others) the following features:
- implementing a /getproxy endpoint
- an updated set of executable commands from the MyProxy Protocol (GET with VONAME and VOMSES, INFO, PUT, STORE)
The /getproxy endpoint is a new endpoint we are using on the Master Portal Server to serve RFC3820 proxy certificates, while the updated MyProxy commands set is used by the Master Portal to save (PUT, STORE) user proxies in a MyProxy Credential Store, and retrieve (INFO, GET) proxies with VOMS extensions.
We considered implementing these modifications into the Master Portal project directly, but abandoned such an approach as it would have meant an extensive code duplication from the upstream OA4MP project. The implemented features are generic enough so that it might benefit the upstream OA4MP project as well, and might, some day end up being merged into it.
security-lib
The security-lib forked project can be found on github. The 'master' branch holds a clean copy of the upstream security-lib repository, while the RCauth labelled branches and tags hold our customized code. Security-lib is a necessary dependency for #OA4MP.
The README.md file in the top level directory contains all the steps for building and installing the security-lib component.
OA4MP
The OA4MP forked project can be found on github. Just as with security-lib, the 'master' branch holds a clean copy of the upstream OA4MP repository, while the RCauth labelled branches and tags hold our customized code. OA4MP relies on #security-lib.
The README.md file in the top level directory contains all the steps for building and installing the OA4MP component.
Building the Master Portal
The master-portal-client module is based on a modified version of the OA4MP Client, while the the master-portal-server module is based on a modified version of the OA4MP Server.
The Master Portal source code is hosted on github. The main (maven) project is called 'aarc-master-portal', which is just a parent project containing the following (maven) modules:
- master-portal-client : contains the MP Client component which makes requests to the Delegation Server.
- master-portal-server : contains the MP Server component which takes requests from registered Portals.
- master-portal-common : contains a set of common constants and utility classes shared between the MP Client and MP server. Both master-portal-client and master-portal-server include this module as a dependency
The README.md file in the top level directory contains all the steps for building the MasterPortal components.
In case you want to deploy also a VO portal and/or SSH key portal, you can find their sources at
Like for the MasterPortal, the README.md file in the top level directory contains all the steps for building.
Building the Delegation Server
The Delegation Server is hosted on github. It's made up of a single module which is built on top of the OA4MP Server, just like the master-portal-server module.
The code could in principle compile against the plain upstream code (since it doesn't need any of the added features for it to function), but it is strongly advised to use also for this the same RCauth forks as described above under dependencies.
The README.md file in the top level directory contains all the steps for building the Delegation Server components.