Skip to content

Commit

Permalink
Merge pull request #2228 from rmsamitha/master
Browse files Browse the repository at this point in the history
Introduce proxy support for backend oauth security
  • Loading branch information
SanojPunchihewa authored Nov 21, 2024
2 parents 4d18c6b + ee30ffb commit 4b40ede
Show file tree
Hide file tree
Showing 11 changed files with 365 additions and 51 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,10 @@ public void send(MessageContext synCtx) {

} catch (AuthException e) {
handleError(synCtx,
"Could not generate access token for oauth configured http endpoint " + this.getName(), e);
"Could not generate access token for oauth configured http endpoint " + this.getName() + ".", e);
} catch (AxisFault axisFault) {
handleError(synCtx,
"Error cloning the message context for oauth configured http endpoint " + this.getName(),
"Error cloning the message context for oauth configured http endpoint " + this.getName() + ".",
axisFault);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/*
* Copyright (c) 2024, WSO2 LLC. (https://www.wso2.com/).
*
* WSO2 LLC. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

package org.apache.synapse.endpoints;

/**
* This class represents a model for proxy configurations which is used for the OAuth authentication of endpoints
*/
public class ProxyConfigs {
private String proxyHost;
private String proxyPort;
private String proxyUsername;
private String proxyPassword;
private String proxyProtocol;
private boolean proxyEnabled;

public void setProxyEnabled(boolean proxyEnabled) {
this.proxyEnabled = proxyEnabled;
}

public void setProxyHost(String proxyHost) {
this.proxyHost = proxyHost;
}

public void setProxyPort(String proxyPort) {
this.proxyPort = proxyPort;
}

public void setProxyUsername(String proxyUsername) {
this.proxyUsername = proxyUsername;
}

public void setProxyPassword(String proxyPassword) {
this.proxyPassword = proxyPassword;
}

public void setProxyProtocol(String proxyProtocol) {
this.proxyProtocol = proxyProtocol;
}

public boolean isProxyEnabled() {
return proxyEnabled;
}

public String getProxyHost() {
return proxyHost;
}

public String getProxyPort() {
return proxyPort;
}

public String getProxyUsername() {
return proxyUsername;
}

public String getProxyPassword() {
return proxyPassword;
}

public String getProxyProtocol() {
return proxyProtocol;
}
}


Original file line number Diff line number Diff line change
Expand Up @@ -87,4 +87,12 @@ public class AuthConstants {
public static final String BASIC_AUTH_USERNAME = "username";
public static final String BASIC_AUTH_PASSWORD = "password";

public static final String PROXY_CONFIGS = "proxyConfigs";
public static final String PROXY_HOST = "proxyHost";
public static final String PROXY_PORT = "proxyPort";
public static final String PROXY_USERNAME = "proxyUsername";
public static final String PROXY_PASSWORD = "proxyPassword";
public static final String OAUTH_PROXY_PROTOCOL = "proxyProtocol";

public static final String HTTPS_PROTOCOL = "https";
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.synapse.MessageContext;
import org.apache.synapse.SynapseConstants;
import org.apache.synapse.endpoints.ProxyConfigs;
import org.apache.synapse.endpoints.auth.AuthConstants;
import org.apache.synapse.endpoints.auth.AuthException;

Expand All @@ -35,13 +36,12 @@ public class AuthorizationCodeHandler extends OAuthHandler {

private final String refreshToken;

public AuthorizationCodeHandler(String tokenApiUrl, String clientId, String clientSecret,
String refreshToken, String authMode, int connectionTimeout,
int connectionRequestTimeout, int socketTimeout,
TokenCacheProvider tokenCacheProvider) {
public AuthorizationCodeHandler(String tokenApiUrl, String clientId, String clientSecret, String refreshToken,
String authMode, int connectionTimeout, int connectionRequestTimeout, int socketTimeout,
TokenCacheProvider tokenCacheProvider, ProxyConfigs proxyConfigs) {

super(tokenApiUrl, clientId, clientSecret, authMode, connectionTimeout, connectionRequestTimeout,
socketTimeout, tokenCacheProvider);
super(tokenApiUrl, clientId, clientSecret, authMode, connectionTimeout, connectionRequestTimeout, socketTimeout,
tokenCacheProvider,proxyConfigs);
this.refreshToken = refreshToken;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.synapse.MessageContext;
import org.apache.synapse.SynapseConstants;
import org.apache.synapse.endpoints.ProxyConfigs;
import org.apache.synapse.endpoints.auth.AuthConstants;
import org.apache.synapse.endpoints.auth.AuthException;

Expand All @@ -34,11 +35,11 @@
public class ClientCredentialsHandler extends OAuthHandler {

public ClientCredentialsHandler(String tokenApiUrl, String clientId, String clientSecret, String authMode,
int connectionTimeout, int connectionRequestTimeout, int socketTimeout,
TokenCacheProvider tokenCacheProvider) {
int connectionTimeout, int connectionRequestTimeout, int socketTimeout,
TokenCacheProvider tokenCacheProvider, ProxyConfigs proxyConfigs) {

super(tokenApiUrl, clientId, clientSecret, authMode, connectionTimeout, connectionRequestTimeout, socketTimeout,
tokenCacheProvider);
tokenCacheProvider, proxyConfigs);
}

@Override
Expand Down
Loading

0 comments on commit 4b40ede

Please sign in to comment.