Skip to content

Commit af60956

Browse files
41 add client parameter to requests (#66)
* Update AsyncRequestCallable.java * Update Challenge.java * Update Endpoint.java * Update IPISimpleLogger.java * Update JSONParser.java * Update PIConfig.java * Update PIConstants.java * Update PIError.java * Update PIResponse.java * Update PrivacyIDEA.java * Delete U2F.java * Update WebAuthn.java * Update TestGetTokenInfo.java * Update TestPollTransaction.java * Update TestRollout.java * Update TestTriggerChallenge.java * Update TestU2F.java * Update TestValidateCheck.java * Update TestValidateCheckSerial.java * Update TestWebAuthn.java * rm u2f * Update Endpoint.java add get client ip * Update PIConfig.java add get client ip * Update PIConstants.java add client, rm u2f * Update PIResponse.java * Update PrivacyIDEA.java add forward client ip * Update PrivacyIDEA.java * Update pom.xml * Update build.yml * Update TestTriggerChallenge.java test the new function * Update PIConfig.java * Update PrivacyIDEA.java * Update Endpoint.java * Update Endpoint.java * change some private fields to protected or public
1 parent f20c82e commit af60956

23 files changed

Lines changed: 272 additions & 598 deletions

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
echo "branches = ${{ steps.jacoco.outputs.branches }}"
4141
4242
- name: Upload JaCoCo coverage report as a workflow artifact
43-
uses: actions/upload-artifact@v2
43+
uses: actions/upload-artifact@v3
4444
with:
4545
name: jacoco-report
4646
path: target/site/jacoco/

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@
5050
<artifactId>maven-compiler-plugin</artifactId>
5151
<version>3.8.1</version>
5252
<configuration>
53-
<source>1.8</source>
54-
<target>1.8</target>
53+
<source>11</source>
54+
<target>11</target>
5555
</configuration>
5656
</plugin>
5757
<plugin>
@@ -86,7 +86,7 @@
8686
<dependency>
8787
<groupId>com.squareup.okhttp3</groupId>
8888
<artifactId>okhttp</artifactId>
89-
<version>4.10.0</version>
89+
<version>4.12.0</version>
9090
</dependency>
9191
<dependency>
9292
<groupId>org.jetbrains.kotlin</groupId>

src/main/java/org/privacyidea/AsyncRequestCallable.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,17 @@
1616
*/
1717
package org.privacyidea;
1818

19+
import okhttp3.Call;
20+
import okhttp3.Callback;
21+
import okhttp3.Response;
22+
import org.jetbrains.annotations.NotNull;
23+
1924
import java.io.IOException;
2025
import java.util.Collections;
2126
import java.util.Map;
2227
import java.util.concurrent.Callable;
2328
import java.util.concurrent.CountDownLatch;
2429
import java.util.concurrent.TimeUnit;
25-
import okhttp3.Call;
26-
import okhttp3.Callback;
27-
import okhttp3.Response;
28-
import org.jetbrains.annotations.NotNull;
2930

3031
import static org.privacyidea.PIConstants.ENDPOINT_AUTH;
3132

src/main/java/org/privacyidea/Challenge.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,21 @@
2121

2222
public class Challenge
2323
{
24-
private final List<String> attributes = new ArrayList<>();
25-
private final String serial;
26-
private final String clientMode;
27-
private final String message;
28-
private final String transactionId;
29-
private final String type;
30-
private final String image;
31-
32-
public Challenge(String serial, String message, String clientMode, String image, String transactionId, String type)
24+
protected final List<String> attributes = new ArrayList<>();
25+
protected final String serial;
26+
protected final String clientMode;
27+
protected final String message;
28+
protected final String transactionID;
29+
protected final String type;
30+
protected final String image;
31+
32+
public Challenge(String serial, String message, String clientMode, String image, String transactionID, String type)
3333
{
3434
this.serial = serial;
3535
this.message = message;
3636
this.clientMode = clientMode;
3737
this.image = image;
38-
this.transactionId = transactionId;
38+
this.transactionID = transactionID;
3939
this.type = type;
4040
}
4141

@@ -49,7 +49,7 @@ public Challenge(String serial, String message, String clientMode, String image,
4949

5050
public String getImage() {return image.replaceAll("\"", "");}
5151

52-
public String getTransactionID() {return transactionId;}
52+
public String getTransactionID() {return transactionID;}
5353

5454
public String getType() {return type;}
5555
}

src/main/java/org/privacyidea/Endpoint.java

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,36 +16,31 @@
1616
*/
1717
package org.privacyidea;
1818

19+
import okhttp3.*;
20+
21+
import javax.net.ssl.SSLContext;
22+
import javax.net.ssl.SSLSocketFactory;
23+
import javax.net.ssl.TrustManager;
24+
import javax.net.ssl.X509TrustManager;
1925
import java.io.IOException;
20-
import java.io.UnsupportedEncodingException;
26+
import java.net.InetSocketAddress;
27+
import java.net.Proxy;
2128
import java.net.URLEncoder;
2229
import java.nio.charset.StandardCharsets;
2330
import java.security.KeyManagementException;
2431
import java.security.NoSuchAlgorithmException;
2532
import java.util.Map;
2633
import java.util.concurrent.TimeUnit;
27-
import javax.net.ssl.SSLContext;
28-
import javax.net.ssl.SSLSocketFactory;
29-
import javax.net.ssl.TrustManager;
30-
import javax.net.ssl.X509TrustManager;
31-
import okhttp3.Callback;
32-
import okhttp3.FormBody;
33-
import okhttp3.HttpUrl;
34-
import okhttp3.OkHttpClient;
35-
import okhttp3.Request;
3634

37-
import static org.privacyidea.PIConstants.GET;
38-
import static org.privacyidea.PIConstants.HEADER_USER_AGENT;
39-
import static org.privacyidea.PIConstants.POST;
40-
import static org.privacyidea.PIConstants.WEBAUTHN_PARAMETERS;
35+
import static org.privacyidea.PIConstants.*;
4136

4237
/**
4338
* This class handles sending requests to the server.
4439
*/
4540
class Endpoint
4641
{
4742
private final PrivacyIDEA privacyIDEA;
48-
private final PIConfig piconfig;
43+
private final PIConfig piConfig;
4944
private final OkHttpClient client;
5045

5146
final TrustManager[] trustAllManager = new TrustManager[]{new X509TrustManager()
@@ -70,14 +65,14 @@ public java.security.cert.X509Certificate[] getAcceptedIssuers()
7065
Endpoint(PrivacyIDEA privacyIDEA)
7166
{
7267
this.privacyIDEA = privacyIDEA;
73-
this.piconfig = privacyIDEA.configuration();
68+
this.piConfig = privacyIDEA.configuration();
7469

7570
OkHttpClient.Builder builder = new OkHttpClient.Builder();
76-
builder.connectTimeout(piconfig.httpTimeoutMs, TimeUnit.MILLISECONDS)
77-
.writeTimeout(piconfig.httpTimeoutMs, TimeUnit.MILLISECONDS)
78-
.readTimeout(piconfig.httpTimeoutMs, TimeUnit.MILLISECONDS);
71+
builder.connectTimeout(piConfig.httpTimeoutMs, TimeUnit.MILLISECONDS)
72+
.writeTimeout(piConfig.httpTimeoutMs, TimeUnit.MILLISECONDS)
73+
.readTimeout(piConfig.httpTimeoutMs, TimeUnit.MILLISECONDS);
7974

80-
if (!this.piconfig.doSSLVerify)
75+
if (!this.piConfig.verifySSL)
8176
{
8277
// Trust all certs and verify every host
8378
try
@@ -93,6 +88,13 @@ public java.security.cert.X509Certificate[] getAcceptedIssuers()
9388
privacyIDEA.error(e);
9489
}
9590
}
91+
92+
if (!piConfig.proxyHost.isEmpty())
93+
{
94+
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(piConfig.proxyHost, piConfig.proxyPort));
95+
builder.proxy(proxy);
96+
}
97+
9698
this.client = builder.build();
9799
}
98100

@@ -105,44 +107,47 @@ public java.security.cert.X509Certificate[] getAcceptedIssuers()
105107
* @param method http request method
106108
* @param callback okhttp3 callback
107109
*/
108-
void sendRequestAsync(String endpoint, Map<String, String> params, Map<String, String> headers, String method,
109-
Callback callback)
110+
void sendRequestAsync(String endpoint, Map<String, String> params, Map<String, String> headers, String method, Callback callback)
110111
{
111-
HttpUrl httpUrl = HttpUrl.parse(piconfig.serverURL + endpoint);
112+
HttpUrl httpUrl = HttpUrl.parse(piConfig.serverURL + endpoint);
112113
if (httpUrl == null)
113114
{
114-
privacyIDEA.error("Server url could not be parsed: " + (piconfig.serverURL + endpoint));
115+
privacyIDEA.error("Server url could not be parsed: " + (piConfig.serverURL + endpoint));
115116
// Invoke the callback to terminate the thread that called this function.
116117
callback.onFailure(null, new IOException("Request could not be created because the url could not be parsed"));
117118
return;
118119
}
119120
HttpUrl.Builder urlBuilder = httpUrl.newBuilder();
121+
if (!piConfig.forwardClientIP.isEmpty())
122+
{
123+
privacyIDEA.log("Forwarding client IP: " + piConfig.forwardClientIP);
124+
params.put(CLIENT_IP, piConfig.forwardClientIP);
125+
}
120126
privacyIDEA.log(method + " " + endpoint);
121127
params.forEach((k, v) ->
122-
{
128+
{
123129
if (k.equals("pass") || k.equals("password"))
124130
{
125131
v = "*".repeat(v.length());
126132
}
127-
128133
privacyIDEA.log(k + "=" + v);
129-
});
134+
});
130135

131136
if (GET.equals(method))
132137
{
133138
params.forEach((key, value) ->
134-
{
139+
{
135140
String encValue = URLEncoder.encode(value, StandardCharsets.UTF_8);
136141
urlBuilder.addQueryParameter(key, encValue);
137-
});
142+
});
138143
}
139144

140145
String url = urlBuilder.build().toString();
141146
//privacyIDEA.log("URL: " + url);
142147
Request.Builder requestBuilder = new Request.Builder().url(url);
143148

144149
// Add the headers
145-
requestBuilder.addHeader(HEADER_USER_AGENT, piconfig.userAgent);
150+
requestBuilder.addHeader(HEADER_USER_AGENT, piConfig.userAgent);
146151
if (headers != null && !headers.isEmpty())
147152
{
148153
headers.forEach(requestBuilder::addHeader);
@@ -152,7 +157,7 @@ void sendRequestAsync(String endpoint, Map<String, String> params, Map<String, S
152157
{
153158
FormBody.Builder formBodyBuilder = new FormBody.Builder();
154159
params.forEach((key, value) ->
155-
{
160+
{
156161
if (key != null && value != null)
157162
{
158163
String encValue = value;
@@ -164,7 +169,7 @@ void sendRequestAsync(String endpoint, Map<String, String> params, Map<String, S
164169
}
165170
formBodyBuilder.add(key, encValue);
166171
}
167-
});
172+
});
168173
// This switches okhttp to make a post request
169174
requestBuilder.post(formBodyBuilder.build());
170175
}

src/main/java/org/privacyidea/IPISimpleLogger.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@
2121
*/
2222
public interface IPISimpleLogger
2323
{
24-
void pilog(String message);
24+
void piLog(String message);
2525
}

0 commit comments

Comments
 (0)