PolicyNegoziazioneToken.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 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.token;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.commons.lang.StringUtils;
- import org.openspcoop2.core.config.constants.CostantiConfigurazione;
- import org.openspcoop2.pdd.config.dynamic.PddPluginLoader;
- import org.openspcoop2.pdd.core.token.parser.BasicNegoziazioneTokenParser;
- import org.openspcoop2.pdd.core.token.parser.INegoziazioneTokenParser;
- import org.openspcoop2.pdd.core.token.parser.TipologiaClaimsNegoziazione;
- import org.openspcoop2.utils.resources.ClassLoaderUtilities;
- import org.openspcoop2.utils.transport.http.HttpRequestMethod;
- /**
- * PolicyGestioneToken
- *
- * @author Poli Andrea (poli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class PolicyNegoziazioneToken extends AbstractPolicyToken implements Serializable {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
-
- public INegoziazioneTokenParser getNegoziazioneTokenParser() throws TokenException {
- INegoziazioneTokenParser parser = null;
- TipologiaClaimsNegoziazione tipologiaClaims = TipologiaClaimsNegoziazione.valueOf(this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_PARSER_TYPE));
-
- if(this.isCustomGrant()) {
- String customParser = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_PARSER_TYPE_CUSTOM);
- if(customParser!=null && StringUtils.isNotEmpty(customParser)) {
- tipologiaClaims = TipologiaClaimsNegoziazione.valueOf(customParser);
- }
- }
-
- if(TipologiaClaimsNegoziazione.CUSTOM.equals(tipologiaClaims)) {
- return getNegoziazioneTokenCustomParser();
- }
- else{
- parser = new BasicNegoziazioneTokenParser(tipologiaClaims, TokenUtilities.getRetrieveResponseClaimsMappingProperties(this.properties));
- }
- return parser;
- }
- private INegoziazioneTokenParser getNegoziazioneTokenCustomParser() throws TokenException {
- INegoziazioneTokenParser parser = null;
- String className = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_PARSER_CLASS_NAME);
- if(className!=null && StringUtils.isNotEmpty(className) && !CostantiConfigurazione.POLICY_ID_NON_DEFINITA.equals(className)) {
- try {
- parser = (INegoziazioneTokenParser) ClassLoaderUtilities.newInstance(className);
- }catch(Exception e) {
- throw new TokenException(e.getMessage(),e);
- }
- }
- else {
- String tipo = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_PARSER_PLUGIN_TYPE);
- if(tipo!=null && StringUtils.isNotEmpty(tipo) && !CostantiConfigurazione.POLICY_ID_NON_DEFINITA.equals(tipo)) {
- try{
- PddPluginLoader pluginLoader = PddPluginLoader.getInstance();
- parser = pluginLoader.newTokenNegoziazione(tipo);
- }catch(Exception e){
- throw new TokenException(e.getMessage(),e); // descrizione errore già corretta
- }
- }
- else {
- throw new TokenException("Deve essere selezionato un plugin per il 'Formato Risposta'");
- }
- }
- return parser;
- }
-
- public String getEndpoint() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_URL);
- }
-
- public boolean isEndpointHttps() {
- return TokenUtilities.isEnabled(this.defaultProperties, Costanti.POLICY_ENDPOINT_HTTPS_STATO)
- || isHttpsAuthentication(); // anche solo se è abilitato httpsAuthentication, di fatto è abilitato https
- }
- public boolean isHttpsAuthentication() {
- return TokenUtilities.isEnabled(this.defaultProperties, Costanti.POLICY_RETRIEVE_TOKEN_AUTH_SSL_STATO);
- }
-
- public boolean isBasicAuthentication() {
- return TokenUtilities.isEnabled(this.defaultProperties, Costanti.POLICY_RETRIEVE_TOKEN_AUTH_BASIC_STATO);
- }
- public String getBasicAuthenticationUsername() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_AUTH_BASIC_USERNAME);
- }
- public String getBasicAuthenticationPassword() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_AUTH_BASIC_PASSWORD);
- }
- public boolean isBasicAuthenticationAsAuthorizationHeader() {
- return TokenUtilities.isEnabled(this.defaultProperties, Costanti.POLICY_RETRIEVE_TOKEN_AUTH_BASIC_AS_AUTHORIZATION_HEADER);
- }
-
- public boolean isBearerAuthentication() {
- return TokenUtilities.isEnabled(this.defaultProperties, Costanti.POLICY_RETRIEVE_TOKEN_AUTH_BEARER_STATO);
- }
- public String getBeareAuthenticationToken() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_AUTH_BEARER_TOKEN);
- }
-
- public boolean isClientCredentialsGrant() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_MODE);
- return Costanti.ID_RETRIEVE_TOKEN_METHOD_CLIENT_CREDENTIAL.equals(mode);
- }
- public boolean isRfc7523x509Grant() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_MODE);
- return Costanti.ID_RETRIEVE_TOKEN_METHOD_RFC_7523_X509.equals(mode);
- }
- public boolean isRfc7523ClientSecretGrant() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_MODE);
- return Costanti.ID_RETRIEVE_TOKEN_METHOD_RFC_7523_CLIENT_SECRET.equals(mode);
- }
- public boolean isUsernamePasswordGrant() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_MODE);
- return Costanti.ID_RETRIEVE_TOKEN_METHOD_USERNAME_PASSWORD.equals(mode);
- }
- public boolean isCustomGrant() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_MODE);
- return Costanti.ID_RETRIEVE_TOKEN_METHOD_CUSTOM.equals(mode);
- }
- public String getLabelGrant() {
- if(this.isClientCredentialsGrant()) {
- return Costanti.ID_RETRIEVE_TOKEN_METHOD_CLIENT_CREDENTIAL_LABEL;
- }
- else if(this.isUsernamePasswordGrant()) {
- return Costanti.ID_RETRIEVE_TOKEN_METHOD_USERNAME_PASSWORD_LABEL;
- }
- else if(this.isRfc7523x509Grant()) {
- return Costanti.ID_RETRIEVE_TOKEN_METHOD_RFC_7523_X509_LABEL;
- }
- else if(this.isRfc7523ClientSecretGrant()) {
- return Costanti.ID_RETRIEVE_TOKEN_METHOD_RFC_7523_CLIENT_SECRET_LABEL;
- }
- else if(this.isCustomGrant()) {
- return Costanti.ID_RETRIEVE_TOKEN_METHOD_CUSTOM_LABEL;
- }
- return "Non definita";
- }
- public boolean isPDND() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_MODE_PDND);
- return "true".equalsIgnoreCase(mode);
- }
-
- public String getUsernamePasswordGrantUsername() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_USERNAME);
- }
- public String getUsernamePasswordGrantPassword() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_PASSWORD);
- }
-
- public String getScopeString() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_SCOPES);
- }
- public List<String> getScopes(NegoziazioneTokenDynamicParameters dynamicParameters) {
- List<String> l = new ArrayList<>();
- String scopes = dynamicParameters.getScope();
- if(scopes!=null) {
- if(scopes.contains(",")) {
- String [] tmp = scopes.split(",");
- for (String s : tmp) {
- l.add(s.trim());
- }
- }
- else {
- l.add(scopes.trim());
- }
- }
- return l;
- }
- public String getAudience() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_AUDIENCE);
- }
- public boolean isFormClientIdApplicativoModI() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_FORM_CLIENT_ID_MODE);
- return mode!=null && Costanti.CHOICE_APPLICATIVO_MODI_VALUE.equals(mode);
- }
- public boolean isFormClientIdFruizioneModI() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_FORM_CLIENT_ID_MODE);
- return mode!=null && Costanti.CHOICE_FRUIZIONE_MODI_VALUE.equals(mode);
- }
- public String getFormClientId() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_FORM_CLIENT_ID);
- }
- public String getFormResource() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_FORM_RESOURCE);
- }
- public String getFormParameters() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_FORM_PARAMETERS);
- }
-
- public String getHttpMethod() {
- if(this.isCustomGrant()) {
- String httpMethod = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_HTTP_METHOD);
- if(httpMethod!=null && StringUtils.isNotEmpty(httpMethod)) {
- return httpMethod;
- }
- return HttpRequestMethod.GET.name();
- }
- return HttpRequestMethod.POST.name();
- }
- public String getHttpContentType() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_HTTP_CONTENT_TYPE);
- }
- public String getHttpHeaders() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_HTTP_HEADERS);
- }
-
- public String getDynamicPayloadType() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_HTTP_PAYLOAD_TEMPLATE_TYPE);
- }
- public boolean isDynamicPayloadTemplate() {
- return Costanti.POLICY_RETRIEVE_TOKEN_HTTP_PAYLOAD_TEMPLATE_TYPE_TEMPLATE.equals(this.getDynamicPayloadType());
- }
- public boolean isDynamicPayloadFreemarkerTemplate() {
- return Costanti.POLICY_RETRIEVE_TOKEN_HTTP_PAYLOAD_TEMPLATE_TYPE_FREEMARKER_TEMPLATE.equals(this.getDynamicPayloadType());
- }
- public boolean isDynamicPayloadVelocityTemplate() {
- return Costanti.POLICY_RETRIEVE_TOKEN_HTTP_PAYLOAD_TEMPLATE_TYPE_VELOCITY_TEMPLATE.equals(this.getDynamicPayloadType());
- }
- public String getDynamicPayload() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_HTTP_PAYLOAD);
- }
-
- public boolean isSaveErrorInCache() {
- return TokenUtilities.isEnabled(this.defaultProperties, Costanti.POLICY_RETRIEVE_TOKEN_SAVE_ERROR_IN_CACHE);
- }
-
-
- public String getForwardTokenMode() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_FORWARD_MODE);
- }
- public String getForwardTokenModeCustomHeader() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_FORWARD_MODE_CUSTOM_HEADER_NAME);
- }
- public String getForwardTokenModeCustomUrl() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_FORWARD_MODE_CUSTOM_URL_PARAMETER_NAME);
- }
-
- public boolean isJwtClientIdApplicativoModI() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_CLIENT_ID_MODE);
- return mode!=null && Costanti.CHOICE_APPLICATIVO_MODI_VALUE.equals(mode);
- }
- public boolean isJwtClientIdFruizioneModI() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_CLIENT_ID_MODE);
- return mode!=null && Costanti.CHOICE_FRUIZIONE_MODI_VALUE.equals(mode);
- }
- public String getJwtClientId() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_CLIENT_ID);
- }
- public String getJwtClientSecret() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_CLIENT_SECRET);
- }
- public boolean isJwtIssuerApplicativoModI() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_ISSUER_MODE);
- return mode!=null && Costanti.CHOICE_APPLICATIVO_MODI_VALUE.equals(mode);
- }
- public boolean isJwtIssuerFruizioneModI() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_ISSUER_MODE);
- return mode!=null && Costanti.CHOICE_FRUIZIONE_MODI_VALUE.equals(mode);
- }
- public String getJwtIssuer() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_ISSUER);
- }
- public boolean isJwtSubjectApplicativoModI() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SUBJECT_MODE);
- return mode!=null && Costanti.CHOICE_APPLICATIVO_MODI_VALUE.equals(mode);
- }
- public boolean isJwtSubjectFruizioneModI() {
- String mode = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SUBJECT_MODE);
- return mode!=null && Costanti.CHOICE_FRUIZIONE_MODI_VALUE.equals(mode);
- }
- public String getJwtSubject() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SUBJECT);
- }
- public String getJwtIdentifier() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_IDENTIFIER);
- }
- public String getJwtAudience() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_AUDIENCE);
- }
- public Integer getJwtTtlSeconds() {
- String ttl = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_EXPIRED_TTL_SECONDS);
- if(ttl==null || StringUtils.isEmpty(ttl)) {
- ttl = Costanti.POLICY_RETRIEVE_TOKEN_JWT_EXPIRED_TTL_SECONDS_DEFAULT_VALUE;
- }
- return Integer.valueOf(ttl);
- }
- public String getJwtPurposeId() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_PURPOSE_ID);
- }
- public String getJwtSessionInfo() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SESSION_INFO);
- }
- public String getJwtClaims() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_CLAIMS);
- }
- public String getJwtSignAlgorithm() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_ALGORITHM);
- }
- public boolean isJwtSignIncludeKeyIdWithKeyAlias() {
- String tmp = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_KEY_ID);
- return tmp!=null && Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_KEY_ID_MODE_ALIAS.equals(tmp);
- }
- public boolean isJwtSignIncludeKeyIdWithClientId() {
- String tmp = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_KEY_ID);
- return tmp!=null && Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_KEY_ID_MODE_CLIENT_ID.equals(tmp);
- }
- public boolean isJwtSignIncludeKeyIdApplicativoModI() {
- String tmp = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_KEY_ID);
- return tmp!=null && Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_KEY_ID_MODE_APPLICATIVO_MODI.equals(tmp);
- }
- public boolean isJwtSignIncludeKeyIdFruizioneModI() {
- String tmp = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_KEY_ID);
- return tmp!=null && Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_KEY_ID_MODE_FRUIZIONE_MODI.equals(tmp);
- }
- public boolean isJwtSignIncludeKeyIdCustom() {
- String tmp = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_KEY_ID);
- return tmp!=null && Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_KEY_ID_MODE_CUSTOM.equals(tmp);
- }
- public String getJwtSignIncludeKeyIdCustom() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_KEY_ID_VALUE);
- }
- public boolean isJwtSignIncludeX509Cert() {
- String tmp = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_X509_CERT);
- return tmp!=null && Boolean.valueOf(tmp);
- }
- public String getJwtSignIncludeX509URL() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_X509_URL);
- }
- public boolean isJwtSignIncludeX509CertSha1() {
- String tmp = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_X509_SHA1);
- return tmp!=null && Boolean.valueOf(tmp);
- }
- public boolean isJwtSignIncludeX509CertSha256() {
- String tmp = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_INCLUDE_X509_SHA256);
- return tmp!=null && Boolean.valueOf(tmp);
- }
- public boolean isJwtSignJoseContentType() {
- String tmp = this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_JOSE_CONTENT_TYPE);
- return tmp!=null && Boolean.valueOf(tmp);
- }
- public String getJwtSignJoseType() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_JOSE_TYPE);
- }
- public boolean isJwtSignKeystoreApplicativoModI() {
- return Costanti.KEYSTORE_TYPE_APPLICATIVO_MODI_VALUE.equals(getJwtSignKeystoreType());
- }
- public boolean isJwtSignKeystoreFruizioneModI() {
- return Costanti.KEYSTORE_TYPE_FRUIZIONE_MODI_VALUE.equals(getJwtSignKeystoreType());
- }
- public String getJwtSignKeystoreType() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_KEYSTORE_TYPE);
- }
- public String getJwtSignKeystoreFile() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_KEYSTORE_FILE);
- }
- public String getJwtSignKeystoreFilePublicKey() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_KEYSTORE_FILE_PUBLIC_KEY);
- }
- public String getJwtSignKeyPairAlgorithm() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_KEYPAIR_ALGORITHM);
- }
- public String getJwtSignKeystorePassword() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_KEYSTORE_PASSWORD);
- }
- public String getJwtSignKeyAlias() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_KEY_ALIAS);
- }
- public String getJwtSignKeyPassword() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_KEY_PASSWORD);
- }
- public String getJwtSignKeystoreByokPolicy() {
- return this.defaultProperties.getProperty(Costanti.POLICY_RETRIEVE_TOKEN_JWT_SIGN_KEYSTORE_BYOK_POLICY);
- }
- }