Skip to content

Updated Roadmap and Migration Plan to Flex

Djeumen Rolain Bonaventure edited this page Sep 16, 2022 · 2 revisions

oxShibboleth Roadmap and Gluu Flex Migration Plan

1 - Background , Objective and Contents of the Document

Back in January, a roadmap for oxShibboleth was established. Some of the items on this list were completed , most were not. In addition , there has been an increasing demand for a Shibboleth based solution in Gluu Flex. A document was produced too but with no clear execution plan. The goal of this document is to consolidate both and provide a clear roadmap ahead for oxShibboleth and it's equivalent in Gluu Flex. Work will be divided in tasks. Each task will be assigned a task group and an iteration. Task groups put together related tasks. Iterations group tasks in terms of schedule (which group of tasks to work on next).

2 - Task List

In this section, we will outline each task. Each task is associated to a task group that helps identify related tasks, and also to an iteration group , that helps schedule tasks (probably by importance and/or urgency).

2 - 1 Create A FAQ for common use cases and runtime errors .

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

The objective of this task is to go through some SAML related support tickets and identify some commonly encountered use cases and runtime error messages. These error messages or use cases and their associated solutions will be added to the current documentation as an FAQ section. Care should be taken not to include common use cases requiring development of enhanced features as these will be or should be handled by our partners.

2 - 2 Upgrade Shibboleth IDP to the latest version

v

  • Priority
  • Task Group:
  • Iteration:
  • Duration:

The objective of this task is to perform upgrades of Shibboleth SAML IDP to the latest version. It is important from a feature and even more so from a security standpoint. Instead of opening a ticket each and every time an upgrade is needed, the following is suggested:

  1. A ticket will be open permanently for the purpose at hand it
  2. Check for new releases of Shibboleth IDP through the mailing list or other means. If a new release is found, create a comment under the issue created in step one.
  3. In the comment created above,stNah ate the version of Shibboleth IDP to upgrade to , and include the relevant links and potential areas impacted by the upgrade.
  4. Perform the upgrade
  5. Re-open the comment opened above and document major changes and impacted areas. This will be used by documentation writers.
  6. Repeat from step two.

2 - 3 Convert Gluu specific parts of SAML IDP into a plugin

  • Priority:

  • Task Group:

  • Iteration:

  • Duration:

    Shibboleth IDP 4.1.x introduced the concepts of modules and plugins. Plugins allow functionalities to be introduced in Shibboleth IDP in a pluggable way that does not require lockstep versionning with the IDP. The objective of this task will be to leverage this and bundle every Gluu specific IDP piece of code as a plugin. This should modularize and simplify installation , even presenting a business opportunity to monetize some enhanced features that we may develop on the side.

2 - 4 Develop a custom Shibboleth IDP DataConnector

  • Priority:
  • Task Group:
  • Iteration:
  • Duration

Gluu supports many a database backend and may support even more in the future. This means every time a backend is added, support needs to be added in Gluu SAML IDP. Gluu has an excellent project called oxOrm which is a database abstraction layer used accross it's products. It could serve as a basis for a custom Shibboleth IDP DataConnector that will eliminate the need(s) to always have to add support for an extra database.

2 - 5 Re-organize Shibboleth template generation and modification

In it's current state, Shibboleth IDP relies on oxTrust to generate some of it's configuration files on the fly. Those files are currently in a jar, which makes them a bit hard to modify by customers. An easier approach should be devised.

2 - 6 Assign default acr for new Trust Relationships

Add the possibility for a user to set the default acr that will be used for a trust relationship. This will involve modifying the oxTrust UI and also in oxShibboleth.

2 - 7 Use FIPS compliant keystore for signatures

  • Priority:
  • Task Group:
  • Iteration:
  • Duration

The default JKS keystore with CA certificates, cacerts, included with the JDK is not FIPS compliant. FIPS 140-2 requires a PKCS12 PBES2 keystore; JKS keystores and PKCS12 keystores created with keytool using the Sun JSSE provider (the default) are not supported. If you are using the default JDK cacerts keystore, you need to complete the following steps to ensure FIPS compliance:

  • Convert the JDK cacerts keystore from JKS to PKCS12 format
  • Convert the PKCS12 keystore using the RSA JCE provider to be FIPS compliant
  • Set Java system properties to update the default trust store used by Java

2 - 8 Allow CAS app to participate in Shibboleth SLO

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

Preliminary investigation shows CAS Apps are unable to participate in Shibboleth SLO and it may be due to a configuration issue. A fix needs to be issued. We don't have many customers using CAS , so this is not a high priority issue. This also may necessitate splitting this work item into two more (in case this requires a UI change).

2 - 9 MDQ support for InCommon metadata consumption in Gluu server

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

InCommon has introduced MDQ for their metadata query lately, It will greatly help us to manage server resources. Work has already been done (but not tested) for the backend , but not much has been done on the frontend.

2 - 10 Clear existing backlog of bugs

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

There is a (long) list of existing bugs that are to be fixed. That backlog needs to be cleared. A list of them will be outlined below:

  • Missing Content-Type header on ssologout page

2 - 10 Support Front Channel SAML Logout

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

Front-channel (e.g. HTTP-Redirect) logout, works in standalone Shibboleth since version 3.2.0 Gluu 3.1.6. is using Shibboleth as an extension - i.e. during login it forwards authentication work to oxAuth. However, it seems that logout endpoints are not yet notifying oxAuth to destroy the user session on Gluu server.

2 - 11 Implement Gluu Persistent Noncorreletable Identifier

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

See issue #58 for more details.

2 - 12 Back-channel SAML SOAP Logout

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

The current implementation of Shibboleth IDP does not support the back-channel logout functionality. Some specifications require that a logout happen over SOAP instead of front-channel SAML SLO flow. The Shibboleth IDP is implementing the functionality in their upcoming release and integrating that release would allow Gluu to leverage this feature.

2 - 13 Load Config from HTTPS

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

Currently we load config from the filesystem. This makes it really hard to cluster... In Shib IDP v3 there is a way to load config from https. This would make our lives way easier.

2 - 14 SAML flows failure with several tabs of same browser window initiate them quickly

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

See issue #41 for more details.

2 - 15 Migrate shib-oxauth-authn to Flex

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

oxShibboleth currently contains a sub-module called shib-oxauth-authn. It contains the business logic allowing Shibboleth IDP to talk to oxAuth. It also relies on oxAuth libraries to collect user information. References to oxAuth within this project will have to be changed to references to jans-auth. Also , this contains code that invokes interception scripts. Those interception scripts will have to be changed , probably, new method signatures will have to be introduced in order to properly abstract away IDP structures these scripts are supposed to work with. We also have a new project called Agama. It would be nice if it's use could be extended to our case.

2 - 16 Migrate existing configuration files to Flex

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

Shibboleth IDP , since version 4 has introduced new and better configuration semantics. It would be a good time and place to introduce them. One of those configuration files which have changed are the Metadata configuration files. Attribute resolution configuration was changed too, as of version 4 of Shibboleth IDP. We started the migration, but this would be a good time to finish.

2 - 17 oxTrust Configuration Generation and Update Migration

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

oxShibboleth IDP relies on oxTrust to generate and update configuration files from templates. This process will have to be moved from oxTrust. Probably integrated into oxShibboleth. This is contingent on how from now henceforth configuration storage will be done. More on that later.

2 - 18 Implementation of a new configuration load / store mechanism

  • Priority:
  • Task Group:
  • Iteration:
  • Duration:

This is experimental , but in line with 2-16 , we will be investigating a means to integrate configuration loading directly into Shibboleth IDP. It may just make a better alternative to Jackrabbit.