Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info
titleShibboleth Developers

Shibboleth developers ONLY use the subclass FirstPartyIdPPlugin which references the Shibboleth "standard property" file location that manages plugin compatibility metadata (https://shibboleth.net/downloads/identity-provider/plugins/plugins.properties), which is the only file in the java-idp-plugin-mgmt  project.

Build the implementing class by deriving it from the PropertyDrivenIdPPlugin class and supply the class as the parameter to the constructor.

Code Block
languagejava
titleThe Service definition
package org.example;
public class ExamplePlugin extends PropertyDrivenIdPPlugin {
    public ExamplePlugin () throws IOException, PluginException {
        super(ExamplePlugin .class);
    }
}


Declare the class as a service by creating the /META-INF/services/net.shibboleth.idp.plugin.IdPPlugin file.

Code Block
languagetext
title /META-INF/services/net.shibboleth.idp.plugin.IdPPlugin
org.example.ExamplePlugin 


Create the properties file used to implement the plugin service. This is a file in the same package as the implementing class and has the name plugin.properties 

Code Block
plugin.id = org.example.ExamplePlugin
# Only used when package manifest is not available, such as within Eclipse
plugin.version = 1.0.0

The full list of properties is:

PropertyRequiredWhatDescription

plugin.id

YIdentifier

This is the unique identifier by which the plugin is described. It is used when manipulating the plugin (for instance doing an update).

NOTE
This file name and property name are purposely the same as required in the bootstrap location of the distribution. This enables one file to be used. See below.
plugin.version
two or three dot-separated numbers

This is current the version of the plugin. If configured correctly, the PropertyDrivenIdPPlugin class will use the version derived from the manifest of the containing jar to provide the version. This is a fallback if the manifest cannot be located.

plugin.license
location (in a jar file) of a text file

This is the (in jar) location of a file containing any licensing details. It is used only when the deployer requests it, and satisfies the spirit of providing the relevant licenses for a plugin.


     plugin.sh --license org.example.shibbolethplugin.ExamplePlugin


plugin.url.0
plugin.url.1
...

YURL

These are the URLs where the plugin compatibility property files (below) are located.  Multiple locations may be specified to allow for redundancy.

plugin.modules.required
Space delimited listThe names of any modules which need to be enabled before the plugin installer will install this plugin. This is the only sense in which plugins may "depend" on other plugins; it's the module(s) exposed by those plugins that are identified as required.


Constructing the Implementation Project

...