diff --git a/portals/publisher/src/main/webapp/site/public/locales/en.json b/portals/publisher/src/main/webapp/site/public/locales/en.json
index bfd42eaa6b4..91bc13dd823 100644
--- a/portals/publisher/src/main/webapp/site/public/locales/en.json
+++ b/portals/publisher/src/main/webapp/site/public/locales/en.json
@@ -785,6 +785,11 @@
"Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.oauth.grant.type.password": "Resource Owner Password",
"Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.password.input": "Password",
"Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.password.message": "Enter Password",
+ "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.proxyHost.input": "Proxy Hostname",
+ "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.proxyPassword.input": "Proxy Password",
+ "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.proxyPort.input": "Proxy Port",
+ "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.proxyProtocol.input": "Proxy Protocol",
+ "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.proxyUsername.input": "Proxy Username",
"Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.socket.\n timeout.duration": "Socket Timeout Duration (ms)",
"Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.token.endpoint.\n connection.configurations": "Token Endpoint Connection Configurations",
"Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.token.url.input": "Token URL",
diff --git a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Endpoints/GeneralConfiguration/EndpointSecurity.jsx b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Endpoints/GeneralConfiguration/EndpointSecurity.jsx
index afb239ef10f..a8af4c6f460 100644
--- a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Endpoints/GeneralConfiguration/EndpointSecurity.jsx
+++ b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Endpoints/GeneralConfiguration/EndpointSecurity.jsx
@@ -23,6 +23,9 @@ import {
ListItem,
ListItemAvatar,
ListItemText,
+ Switch,
+ FormGroup,
+ FormControlLabel,
} from '@mui/material';
import { FormattedMessage, injectIntl } from 'react-intl';
import Table from '@mui/material/Table';
@@ -103,6 +106,17 @@ function EndpointSecurity(props) {
intl, securityInfo, onChangeEndpointAuth, isProduction, saveEndpointSecurityConfig, closeEndpointSecurityConfig,
} = props;
const [endpointSecurityInfo, setEndpointSecurityInfo] = useState(CONSTS.DEFAULT_ENDPOINT_SECURITY);
+
+ if (!(securityInfo?.proxyConfigs != null)) {
+ securityInfo.proxyConfigs = {
+ proxyEnabled: false,
+ proxyHost: '',
+ proxyPort: '',
+ proxyUsername: '',
+ proxyPassword: '',
+ proxyProtocol: '',
+ };
+ }
const [securityValidity, setSecurityValidity] = useState();
const [showAddParameter, setShowAddParameter] = useState(false);
@@ -189,7 +203,7 @@ function EndpointSecurity(props) {
tmpSecurity = { ...securityInfo };
const {
type, username, password, grantType, tokenUrl, clientId, clientSecret, customParameters,
- connectionTimeoutDuration, connectionRequestTimeoutDuration, socketTimeoutDuration,
+ connectionTimeoutDuration, connectionRequestTimeoutDuration, socketTimeoutDuration, proxyConfigs,
} = securityInfo;
const secretPlaceholder = '******';
tmpSecurity.type = type === null ? 'NONE' : type;
@@ -203,6 +217,7 @@ function EndpointSecurity(props) {
tmpSecurity.connectionTimeoutDuration = connectionTimeoutDuration;
tmpSecurity.connectionRequestTimeoutDuration = connectionRequestTimeoutDuration;
tmpSecurity.socketTimeoutDuration = socketTimeoutDuration;
+ tmpSecurity.proxyConfigs = proxyConfigs;
}
setEndpointSecurityInfo(tmpSecurity);
}, [securityInfo]);
@@ -727,6 +742,178 @@ function EndpointSecurity(props) {
>
)}
+
+
+
+ {
+ endpointSecurityInfo.proxyConfigs.proxyEnabled = event.target.checked;
+ setEndpointSecurityInfo({ ...endpointSecurityInfo });
+ validateAndUpdateSecurityInfo('proxyEnabled');
+ }}
+ checked={endpointSecurityInfo.proxyConfigs.proxyEnabled}
+ />
+ )}
+ label='Proxy Configurations'
+ />
+
+
+
+
+
+ )}
+ onChange={(event) => {
+ endpointSecurityInfo.proxyConfigs.proxyHost = event.target.value;
+ setEndpointSecurityInfo({ ...endpointSecurityInfo });
+ validateAndUpdateSecurityInfo('proxyConfigs');
+ }}
+ value={endpointSecurityInfo.proxyConfigs.proxyHost}
+ onBlur={() => validateAndUpdateSecurityInfo('proxyConfigs')}
+ />
+
+
+
+ )}
+ onChange={(event) => {
+ endpointSecurityInfo.proxyConfigs.proxyPort = event.target.value;
+ setEndpointSecurityInfo({ ...endpointSecurityInfo });
+ validateAndUpdateSecurityInfo('proxyConfigs');
+ }}
+ value={endpointSecurityInfo.proxyConfigs.proxyPort}
+ onBlur={() => validateAndUpdateSecurityInfo('proxyConfigs')}
+ />
+
+
+
+ )}
+ onChange={(event) => {
+ endpointSecurityInfo.proxyConfigs.proxyUsername = event.target.value;
+ setEndpointSecurityInfo({ ...endpointSecurityInfo });
+ validateAndUpdateSecurityInfo('proxyConfigs');
+ }}
+ value={endpointSecurityInfo.proxyConfigs.proxyUsername}
+ onBlur={() => validateAndUpdateSecurityInfo('proxyConfigs')}
+ />
+
+
+
+ )}
+ onChange={(event) => {
+ endpointSecurityInfo.proxyConfigs.proxyPassword = event.target.value;
+ setEndpointSecurityInfo({ ...endpointSecurityInfo });
+ validateAndUpdateSecurityInfo('proxyConfigs');
+ }}
+ value={endpointSecurityInfo.proxyConfigs.proxyPassword}
+ onBlur={() => validateAndUpdateSecurityInfo('proxyConfigs')}
+ />
+
+
+
+ )}
+ onChange={(event) => {
+ endpointSecurityInfo.proxyConfigs.proxyProtocol = event.target.value;
+ setEndpointSecurityInfo({ ...endpointSecurityInfo });
+ validateAndUpdateSecurityInfo('proxyConfigs');
+ }}
+ value={endpointSecurityInfo.proxyConfigs.proxyProtocol}
+ onBlur={() => validateAndUpdateSecurityInfo('proxyConfigs')}
+ />
+