/* * Copyright 2017 Graz University of Technology EAAF-Core Components has been developed in a * cooperation between EGIZ, A-SIT Plus, A-SIT, and Graz University of Technology. * * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by the European * Commission - subsequent versions of the EUPL (the "Licence"); You may not use this work except in * compliance with the Licence. You may obtain a copy of the Licence at: * https://joinup.ec.europa.eu/news/understanding-eupl-v12 * * Unless required by applicable law or agreed to in writing, software distributed under the Licence * is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the Licence for the specific language governing permissions and limitations under * the Licence. * * This product combines work with different licenses. See the "NOTICE" text file for details on the * various modules and licenses. The "NOTICE" text file is part of the distribution. Any derivative * works that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egiz.eaaf.core.api.idp.auth.modules; import at.gv.egiz.eaaf.core.api.IRequest; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; /** * 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. * @param pendingReq the current processed pending request * @return the process-ID of a process which is able to work with the given * ExecutionContext, or {@code null}. */ String selectProcess(ExecutionContext context, IRequest pendingReq); /** * 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(); }