Internal configuration issues
Current inplementation of configuration classes is rather limited. There is an effort to clean and extend existing functionality.
Currently some used third-party libraries depend on environment variables. But combination of setenv()/getenv() is not thread safe. The getenv() itself is safe. To solve that problem rather complex infrastructure was introduced - see Utils.h. It is very fragile and difficult to maintain. Better solution is needed. Possible solutions identified:
- Wrap all code accessing environment in mutexes (currently used solution) - complex and requires continuous maintenence efforts.
- Substitute setenv()/getenv() with thread-safe version - difficult to implement.
- Ban setenv() - requires reimplementing some of third-party functionality.
Existing delegation interface implementation need to be updated to support Gridsite delegation protocol.
SAML & XACML
In order to properly integrate Argus into ARC minimal support for SAML and XACML is needed. At least simple classes for creating and parsing SAML tokens and XACML requests/responses. Maybe similar to those for WSRF.
Some third-party WS clients seems to expect WS services to return their WSDL if requested through URL?wsdl. It can be implemented per service. But having it as feature of every service would be useful. WSDL could be assigned by service itself or taken from specified or default file path. It is still not clear how to handle WSDLs which refer to XSDs.
Current implementation does not pay attention to order of element is types defined through <xsd:sequence>. Strictly speaking that order keeps no information and hence is useless. But some paranoic WS implementations may refuse to accept such XML document. Possible solutions:
- Do careful programming while creating SOAP requests and responses.
- Use wrapper classes either automatically or manually generated.
- Use intermediate plugin - similar to schema checking plugin - to comb SOAP going outside HED.
Many people - especially those with java background - are used to tools which create wrapper classes representing elements defined in XML schemas. For complex structures that is convenient. There is wsdl2hed utility which produces such classes for HED XML API. But it can only digest simplest XSD. Making it more advanced would be useful.
EMI common authentication libraries
ARC is responsible for implementing C++ version of EMI common authentication libraries. Maybe that could an opportunity to clean authentication code in ARC.