Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixes #794 switch OauthHelper to HttpClient of jdk11 to support forwa… #795

Merged
merged 1 commit into from
Nov 8, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions client/src/main/java/com/networknt/client/ClientConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ public final class ClientConfig {
public static final String CONFIG_SECRET = "secret";
public static final String REQUEST = "request";
public static final String SERVER_URL = "server_url";
public static final String PROXY_HOST = "proxyHost";
public static final String PROXY_PORT = "proxyPort";
public static final String SERVICE_ID = "serviceId";
public static final String URI = "uri";
public static final String CLIENT_ID = "client_id";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ public BodyPart getBody(String key) {

/**
* Indicates whether this entity has a body part by the key.
* @param key the key
* @return true if has body
*/
public boolean hasBody(String key) {
return (this.bodyPartMap==null? false : this.bodyPartMap.containsKey(key) );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ public AuthorizationCodeRequest() {
Map<String, Object> tokenConfig = ClientConfig.get().getTokenConfig();
if(tokenConfig != null) {
setServerUrl((String)tokenConfig.get(ClientConfig.SERVER_URL));
setProxyHost((String)tokenConfig.get(ClientConfig.PROXY_HOST));
int port = tokenConfig.get(ClientConfig.PROXY_PORT) == null ? 443 : (Integer)tokenConfig.get(ClientConfig.PROXY_PORT);
setProxyPort(port);
setServiceId((String)tokenConfig.get(ClientConfig.SERVICE_ID));
Object object = tokenConfig.get(ClientConfig.ENABLE_HTTP2);
setEnableHttp2(object != null && (Boolean) object);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ public class ClientAuthenticatedUserRequest extends TokenRequest {
/**
* load default values from client.yml for client authenticated user grant, overwrite by setters
* in case you want to change it at runtime.
* @param userType user type
* @param userId user id
* @param roles user roles
*/
public ClientAuthenticatedUserRequest(String userType, String userId, String roles) {
setGrantType(ClientConfig.CLIENT_AUTHENTICATED_USER);
Expand All @@ -26,6 +29,9 @@ public ClientAuthenticatedUserRequest(String userType, String userId, String rol
Map<String, Object> tokenConfig = ClientConfig.get().getTokenConfig();
if(tokenConfig != null) {
setServerUrl((String)tokenConfig.get(ClientConfig.SERVER_URL));
setProxyHost((String)tokenConfig.get(ClientConfig.PROXY_HOST));
int port = tokenConfig.get(ClientConfig.PROXY_PORT) == null ? 443 : (Integer)tokenConfig.get(ClientConfig.PROXY_PORT);
setProxyPort(port);
setServiceId((String)tokenConfig.get(ClientConfig.SERVICE_ID));
Object object = tokenConfig.get(ClientConfig.ENABLE_HTTP2);
setEnableHttp2(object != null && (Boolean) object);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ public ClientCredentialsRequest() {
Map<String, Object> tokenConfig = ClientConfig.get().getTokenConfig();
if(tokenConfig != null) {
setServerUrl((String)tokenConfig.get(ClientConfig.SERVER_URL));
setProxyHost((String)tokenConfig.get(ClientConfig.PROXY_HOST));
int port = tokenConfig.get(ClientConfig.PROXY_PORT) == null ? 443 : (Integer)tokenConfig.get(ClientConfig.PROXY_PORT);
setProxyPort(port);
setServiceId((String)tokenConfig.get(ClientConfig.SERVICE_ID));
Object object = tokenConfig.get(ClientConfig.ENABLE_HTTP2);
setEnableHttp2(object != null && (Boolean) object);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.networknt.client.oauth;

import com.networknt.client.Http2Client;
import io.undertow.client.ClientRequest;
import io.undertow.util.Headers;
import io.undertow.util.Methods;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.http.HttpRequest;
import java.util.HashMap;
import java.util.Map;

Expand Down Expand Up @@ -77,15 +77,15 @@ public void registerComposer(ClientRequestComposers composerName, IClientRequest
private static class DefaultSAMLBearerRequestComposer implements IClientRequestComposable {

@Override
public ClientRequest composeClientRequest(TokenRequest tokenRequest) {
ClientRequest request = new ClientRequest().setMethod(Methods.POST).setPath(tokenRequest.getUri());
request.getRequestHeaders().put(Headers.HOST, "localhost");
request.getRequestHeaders().put(Headers.TRANSFER_ENCODING, "chunked");
request.getRequestHeaders().put(Headers.CONTENT_TYPE, "application/x-www-form-urlencoded");
public HttpRequest composeClientRequest(TokenRequest tokenRequest) {
final HttpRequest request = HttpRequest.newBuilder()
.POST(HttpRequest.BodyPublishers.ofString(composeRequestBody(tokenRequest)))
.uri(URI.create(tokenRequest.getServerUrl() + tokenRequest.getUri()))
.header(Headers.CONTENT_TYPE_STRING, "application/x-www-form-urlencoded")
.build();
return request;
}

@Override
public String composeRequestBody(TokenRequest tokenRequest) {
SAMLBearerRequest SamlTokenRequest = (SAMLBearerRequest)tokenRequest;
Map<String, String> postBody = new HashMap<>();
Expand All @@ -108,16 +108,16 @@ public String composeRequestBody(TokenRequest tokenRequest) {
private static class DefaultClientCredentialRequestComposer implements IClientRequestComposable {

@Override
public ClientRequest composeClientRequest(TokenRequest tokenRequest) {
final ClientRequest request = new ClientRequest().setMethod(Methods.POST).setPath(tokenRequest.getUri());
request.getRequestHeaders().put(Headers.HOST, "localhost");
request.getRequestHeaders().put(Headers.TRANSFER_ENCODING, "chunked");
request.getRequestHeaders().put(Headers.CONTENT_TYPE, "application/x-www-form-urlencoded");
request.getRequestHeaders().put(Headers.AUTHORIZATION, OauthHelper.getBasicAuthHeader(tokenRequest.getClientId(), tokenRequest.getClientSecret()));
public HttpRequest composeClientRequest(TokenRequest tokenRequest) {
final HttpRequest request = HttpRequest.newBuilder()
.POST(HttpRequest.BodyPublishers.ofString(composeRequestBody(tokenRequest)))
.uri(URI.create(tokenRequest.getServerUrl() + tokenRequest.getUri()))
.setHeader(Headers.CONTENT_TYPE_STRING, "application/x-www-form-urlencoded")
.setHeader(Headers.AUTHORIZATION_STRING, OauthHelper.getBasicAuthHeader(tokenRequest.getClientId(), tokenRequest.getClientSecret()))
.build();
return request;
}

@Override
public String composeRequestBody(TokenRequest tokenRequest) {
try {
return OauthHelper.getEncodedString(tokenRequest);
Expand All @@ -134,16 +134,17 @@ public String composeRequestBody(TokenRequest tokenRequest) {
private static class DefaultClientAuthenticatedUserRequestComposer implements IClientRequestComposable {

@Override
public ClientRequest composeClientRequest(TokenRequest tokenRequest) {
final ClientRequest request = new ClientRequest().setMethod(Methods.POST).setPath(tokenRequest.getUri());
request.getRequestHeaders().put(Headers.HOST, "localhost");
request.getRequestHeaders().put(Headers.TRANSFER_ENCODING, "chunked");
request.getRequestHeaders().put(Headers.CONTENT_TYPE, "application/x-www-form-urlencoded");
request.getRequestHeaders().put(Headers.AUTHORIZATION, OauthHelper.getBasicAuthHeader(tokenRequest.getClientId(), tokenRequest.getClientSecret()));
public HttpRequest composeClientRequest(TokenRequest tokenRequest) {
final HttpRequest request = HttpRequest.newBuilder()
.POST(HttpRequest.BodyPublishers.ofString(composeRequestBody(tokenRequest)))
.uri(URI.create(tokenRequest.getServerUrl() + tokenRequest.getUri()))
.setHeader(Headers.CONTENT_TYPE_STRING, "application/x-www-form-urlencoded")
.setHeader(Headers.AUTHORIZATION_STRING, OauthHelper.getBasicAuthHeader(tokenRequest.getClientId(), tokenRequest.getClientSecret()))
.build();

return request;
}

@Override
public String composeRequestBody(TokenRequest tokenRequest) {
try {
return OauthHelper.getEncodedString(tokenRequest);
Expand All @@ -153,5 +154,4 @@ public String composeRequestBody(TokenRequest tokenRequest) {
return "";
}
}

}
64 changes: 21 additions & 43 deletions client/src/main/java/com/networknt/client/oauth/DerefRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,50 +24,9 @@
import java.util.Map;

public class DerefRequest {

/**
* @deprecated will be move to {@link ClientConfig#OAUTH}
*/
@Deprecated
public static String OAUTH = "oauth";

/**
* @deprecated will be move to {@link ClientConfig#DEREF}
*/
@Deprecated
public static String DEREF = "deref";

/**
* @deprecated will be move to {@link ClientConfig#SERVER_URL}
*/
@Deprecated
public static String SERVER_URL = "server_url";

/**
* @deprecated will be move to {@link ClientConfig#SERVICE_ID}
*/
@Deprecated
public static String SERVICE_ID = "serviceId";

/**
* @deprecated will be move to {@link ClientConfig#URI}
*/
@Deprecated
public static String URI = "uri";

/**
* @deprecated will be move to {@link ClientConfig#CLIENT_ID}
*/
@Deprecated
public static String CLIENT_ID = "client_id";

/**
* @deprecated will be move to {@link ClientConfig#ENABLE_HTTP2}
*/
@Deprecated
public static String ENABLE_HTTP2 = "enableHttp2";

private String serverUrl;
private String proxyHost;
private int proxyPort;
private String serviceId;
private String uri;
private String clientId;
Expand All @@ -78,6 +37,9 @@ public DerefRequest(String token) {
Map<String, Object> derefConfig = ClientConfig.get().getDerefConfig();
if(derefConfig != null) {
setServerUrl((String)derefConfig.get(ClientConfig.SERVER_URL));
setProxyHost((String)derefConfig.get(ClientConfig.PROXY_HOST));
int port = derefConfig.get(ClientConfig.PROXY_PORT) == null ? 443 : (Integer)derefConfig.get(ClientConfig.PROXY_PORT);
setProxyPort(port);
setServiceId((String)derefConfig.get(ClientConfig.SERVICE_ID));
Object object = derefConfig.get(ClientConfig.ENABLE_HTTP2);
setEnableHttp2(object != null && (Boolean) object);
Expand Down Expand Up @@ -136,4 +98,20 @@ public void setServiceId(String serviceId) {
public boolean isEnableHttp2() { return enableHttp2; }

public void setEnableHttp2(boolean enableHttp2) { this.enableHttp2 = enableHttp2; }

public String getProxyHost() {
return proxyHost;
}

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

public int getProxyPort() {
return proxyPort;
}

public void setProxyPort(int proxyPort) {
this.proxyPort = proxyPort;
}
}
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
package com.networknt.client.oauth;

import io.undertow.client.ClientRequest;

import java.net.http.HttpRequest;

/**
* An interface to describe that a ClientRequest can be composed by a TokenRequest.
* TokenRequest info should be the same for different Oauth servers, but different Oauth servers may have different way to accept request.
* An interface to describe that a HttpRequest can be composed by a TokenRequest. TokenRequest info should be the
* same for different OAuth servers, but different OAuth servers may have different way to accept request.
*
* @author Steve Hu
*/
public interface IClientRequestComposable {
/**
* compose an actual ClientRequest based on the given TokenRequest model.
* compose an actual HttpRequest based on the given TokenRequest model.
* @param tokenRequest token request
* @return ClientRequest
* @return HttpRequest
*/
ClientRequest composeClientRequest(TokenRequest tokenRequest);
HttpRequest composeClientRequest(TokenRequest tokenRequest);

/**
* compose an actual request body based on the given TokenRequest model.
* @param tokenRequest token request
* @return String
*/
String composeRequestBody(TokenRequest tokenRequest);
}
67 changes: 18 additions & 49 deletions client/src/main/java/com/networknt/client/oauth/KeyRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,56 +28,9 @@
*
*/
public class KeyRequest {

/**
* @deprecated will be move to {@link ClientConfig#OAUTH}
*/
@Deprecated
public static String OAUTH = "oauth";

/**
* @deprecated will be move to {@link ClientConfig#KEY}
*/
@Deprecated
public static String KEY = "key";

/**
* @deprecated will be move to {@link ClientConfig#SERVER_URL}
*/
@Deprecated
public static String SERVER_URL = "server_url";

/**
* @deprecated will be move to {@link ClientConfig#SERVICE_ID}
*/
@Deprecated
public static String SERVICE_ID = "serviceId";

/**
* @deprecated will be move to {@link ClientConfig#URI}
*/
@Deprecated
public static String URI = "uri";

/**
* @deprecated will be move to {@link ClientConfig#CLIENT_ID}
*/
@Deprecated
public static String CLIENT_ID = "client_id";

/**
* @deprecated will be move to {@link ClientConfig#CLIENT_SECRET}
*/
@Deprecated
public static String CLIENT_SECRET = "client_secret";

/**
* @deprecated will be move to {@link ClientConfig#ENABLE_HTTP2}
*/
@Deprecated
public static String ENABLE_HTTP2 = "enableHttp2";

protected String serverUrl;
protected String proxyHost;
protected int proxyPort;
protected String serviceId;
protected String uri;
protected String clientId;
Expand Down Expand Up @@ -140,4 +93,20 @@ public String getKid() {
public void setKid(String kid) {
this.kid = kid;
}

public String getProxyHost() {
return proxyHost;
}

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

public int getProxyPort() {
return proxyPort;
}

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