AbstractAutorizzazioneAuthenticatedRoles.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.pdd.core.autorizzazione.pd;
import org.openspcoop2.pdd.core.CostantiPdD;
import org.openspcoop2.pdd.core.autorizzazione.AutorizzazioneException;
/**
* Classe che implementa una autorizzazione basata sui ruoli
*
* @author Andrea Poli (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
abstract class AbstractAutorizzazioneAuthenticatedRoles extends AbstractAutorizzazioneBase {
private boolean checkRuoloRegistro;
private boolean checkRuoloEsterno;
@SuppressWarnings("unused")
private String nomeAutorizzazione;
protected AbstractAutorizzazioneAuthenticatedRoles(boolean checkRuoloRegistro, boolean checkRuoloEsterno, String nomeAutorizzazione){
this.checkRuoloRegistro = checkRuoloRegistro;
this.checkRuoloEsterno = checkRuoloEsterno;
this.nomeAutorizzazione = nomeAutorizzazione;
}
@Override
public EsitoAutorizzazionePortaDelegata process(DatiInvocazionePortaDelegata datiInvocazione) throws AutorizzazioneException{
EsitoAutorizzazionePortaDelegata esitoAuth = null;
if(datiInvocazione.getIdServizioApplicativo()!=null){
// Se il servizio applicativo non è stato identificato non è possibile effettuare il controllo 'authenticated'
AutorizzazioneAuthenticated auth = new AutorizzazioneAuthenticated();
auth.init(this.getPddContext(), this.getProtocolFactory(), this.getArgs());
esitoAuth = auth.process(datiInvocazione);
if(esitoAuth.isAutorizzato()){
return esitoAuth;
}
}
IAutorizzazionePortaDelegata authRuoli = null;
if(this.checkRuoloRegistro && this.checkRuoloEsterno){
authRuoli = new AutorizzazioneRoles();
}
else if(this.checkRuoloRegistro){
authRuoli = new AutorizzazioneInternalRoles();
}
else {
authRuoli = new AutorizzazioneExternalRoles();
}
authRuoli.init(this.getPddContext(), this.getProtocolFactory(), this.getArgs());
EsitoAutorizzazionePortaDelegata esitoAuthRoles = authRuoli.process(datiInvocazione);
if(esitoAuthRoles.isAutorizzato()){
return esitoAuthRoles;
}
// Se non è autorizzato in nessuno dei due modi ritorno l'errore del tipo authenticated
if(esitoAuth!=null && !CostantiPdD.SERVIZIO_APPLICATIVO_ANONIMO.equals(datiInvocazione.getIdServizioApplicativo().getNome())){
return esitoAuth;
}
else{
return esitoAuthRoles;
}
}
}