/******************************************************************************* *******************************************************************************/ package at.gv.egiz.eaaf.core.api.idp.auth.modules; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.impl.idp.process.model.ProcessDefinition; /** * Provides metadata of a certain module. Uses for module discovery and process selection. */ public interface AuthModule { /** * Returns the priority of the module. The priority defines the order of the respective module within the chain of * discovered modules. Higher priorized modules are asked before lower priorized modules for a process that they can * handle. *

* Internal default modules are priorized neutral ({@code 0}. Use a higher priority ({@code 1...Integer.MAX_VALUE}) * in order to have your module(s) priorized or a lower priority ({@code Integer.MIN_VALUE...-1}) in order to put * your modules behind default modules. * * @return the priority of the module. */ int getPriority(); /** * Selects a process (description), referenced by its unique id, which is able to perform authentication with the * given {@link ExecutionContext}. Returns {@code null} if no appropriate process (description) was available within * this module. * * @param context * an ExecutionContext for a process. * @return the process-ID of a process which is able to work with the given ExecutionContext, or {@code null}. */ String selectProcess(ExecutionContext context); /** * Returns the an Array of {@link ProcessDefinition}s of the processes included in this module. * * @return an array of resource uris of the processes included in this module. */ String[] getProcessDefinitions(); }