Much of the behavior of the SAML MCM can be set and controlled through properties files which can be in one or both of the following formats:

  • A Spring property file – a simple text file with a property name, equals sign, and the property value, one per line. This file is named: application.properties
  • a YAML format file, named application.yml

Choosing which format to use is largely a personal choice as functionally they are identical. One caveat is in the case that there is both a properties and yml file, the properties file will be read first.

The MCM comes with a basic example of both, with the example application.properties file having the core settings for authentication, database connection information, users file, directory/location settings for where the UI should write out the metadata files and metadata-providers.xml file it manages, etc. The example application.yml file contains all the settings that impact the information, options, list elements, etc. that are actually shown in the UI.

There is no technical reason that you need to follow the examples and keep the distinction; you could manage everything through a single application.properties or application.yml if you wanted. On the other hand, it can be a convenient distinction to keep the core "internal/baked-in settings" distinct from the "front-end/UI" settings.

The application properties are Spring configuration files, and follow its built-in methods for where it looks for these files:

  • The classpath root
  • The classpath /config package
  • The current directory (note, in the Internet2 Docker image the "current directory" will be the working directory which is /opt/shibui)
  • The /config subdirectory of the current directory
  • Immediate child directories of the config/ subdirectory
  • File name option passed to the executable jar --spring.config.location=file://{absolute-path-to-file}
  • Directory name passed to the executable jar --spring.config.location=file://{absolute-path-to-directory}
  • Java property -Dspring.config.location
  • Environment variable SPRING_CONFIG_LOCATION
  • Property spring.config.additional-location


Spring properties also utilize profile designations which target the reading of an environment-specific configuration file.

  • Java property -Dspring.profiles.active=prod
  • Environment variable SPRING_PROFILES_ACTIVE=prod
  • Property spring.profiles.active=prod

Application startup will additionally load the file application-prod.properties using the same search order as for application.properties.

  • No labels