Browse Source

Refactored and used MiscUtils

pull/3557/head
vzikratyi 6 years ago
parent
commit
6b41fb9c0e
  1. 12
      application/src/main/java/org/thingsboard/server/config/CustomOAuth2AuthorizationRequestResolver.java
  2. 3
      application/src/main/java/org/thingsboard/server/controller/OAuth2Controller.java
  3. 24
      application/src/main/java/org/thingsboard/server/utils/MiscUtils.java
  4. 70
      application/src/main/java/org/thingsboard/server/utils/WebUtils.java
  5. 2
      dao/src/main/java/org/thingsboard/server/dao/oauth2/HybridClientRegistrationRepository.java

12
application/src/main/java/org/thingsboard/server/config/CustomOAuth2AuthorizationRequestResolver.java

@ -32,13 +32,12 @@ import org.springframework.security.oauth2.core.oidc.endpoint.OidcParameterNames
import org.springframework.security.web.util.UrlUtils;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;
import org.thingsboard.server.dao.oauth2.OAuth2Configuration;
import org.thingsboard.server.utils.WebUtils;
import org.thingsboard.server.utils.MiscUtils;
import javax.servlet.http.HttpServletRequest;
import java.nio.charset.StandardCharsets;
@ -198,13 +197,8 @@ public class CustomOAuth2AuthorizationRequestResolver implements OAuth2Authoriza
private String getRedirectUri(HttpServletRequest request) {
String loginProcessingUri = oauth2Configuration != null ? oauth2Configuration.getLoginProcessingUrl() : DEFAULT_LOGIN_PROCESSING_URI;
String scheme = WebUtils.getScheme(request);
String host = WebUtils.getHost(request);
String port = WebUtils.getPort(request);
log.trace("Scheme - {}, host - {}, port - {}.", scheme, host, port);
String requestHost = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
return requestHost + loginProcessingUri;
String baseUrl= MiscUtils.constructBaseUrl(request);
return baseUrl + loginProcessingUri;
}
/**

3
application/src/main/java/org/thingsboard/server/controller/OAuth2Controller.java

@ -24,6 +24,7 @@ import org.thingsboard.server.common.data.oauth2.OAuth2ClientInfo;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientsParams;
import org.thingsboard.server.common.data.oauth2.SchemeType;
import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.utils.MiscUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@ -37,7 +38,7 @@ public class OAuth2Controller extends BaseController {
@ResponseBody
public List<OAuth2ClientInfo> getOAuth2Clients(HttpServletRequest request) throws ThingsboardException {
try {
return oAuth2Service.getOAuth2Clients(request.getScheme(), request.getServerName());
return oAuth2Service.getOAuth2Clients(MiscUtils.getScheme(request), MiscUtils.getDomainName(request));
} catch (Exception e) {
throw handleException(e);
}

24
application/src/main/java/org/thingsboard/server/utils/MiscUtils.java

@ -49,12 +49,27 @@ public class MiscUtils {
}
public static String constructBaseUrl(HttpServletRequest request) {
String scheme = request.getScheme();
return String.format("%s://%s:%d",
getScheme(request),
getDomainName(request),
getPort(request));
}
public static String getScheme(HttpServletRequest request){
String scheme = request.getScheme();
String forwardedProto = request.getHeader("x-forwarded-proto");
if (forwardedProto != null) {
scheme = forwardedProto;
}
return scheme;
}
public static String getDomainName(HttpServletRequest request){
return request.getServerName();
}
public static int getPort(HttpServletRequest request){
String forwardedProto = request.getHeader("x-forwarded-proto");
int serverPort = request.getServerPort();
if (request.getHeader("x-forwarded-port") != null) {
@ -72,11 +87,6 @@ public class MiscUtils {
break;
}
}
String baseUrl = String.format("%s://%s:%d",
scheme,
request.getServerName(),
serverPort);
return baseUrl;
return serverPort;
}
}

70
application/src/main/java/org/thingsboard/server/utils/WebUtils.java

@ -1,70 +0,0 @@
/**
* Copyright © 2016-2020 The Thingsboard Authors
*
* Licensed 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.thingsboard.server.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import javax.servlet.http.HttpServletRequest;
@Slf4j
public class WebUtils {
private static final String X_FORWARDED_HOST_HEADER_KEY = "x-forwarded-host";
private static final String X_FORWARDED_PORT_HEADER_KEY = "x-forwarded-port";
private static final String X_FORWARDED_PROTO_HEADER_KEY = "x-forwarded-proto";
public static String getHost(HttpServletRequest request) {
String forwardedHost = request.getHeader(X_FORWARDED_HOST_HEADER_KEY);
log.trace("Forwarded host - {}.", forwardedHost);
if (!StringUtils.isEmpty(forwardedHost)) {
if (forwardedHost.contains(":")) {
return forwardedHost.substring(0, forwardedHost.indexOf(":"));
} else {
return forwardedHost;
}
} else {
return request.getServerName();
}
}
public static String getScheme(HttpServletRequest request) {
String forwardedProto = request.getHeader(X_FORWARDED_PROTO_HEADER_KEY);
log.trace("Forwarded proto - {}.", forwardedProto);
if (!StringUtils.isEmpty(forwardedProto)) {
return forwardedProto;
} else {
return request.getServerName();
}
}
public static String getPort(HttpServletRequest request) {
String forwardedPort = request.getHeader(X_FORWARDED_PORT_HEADER_KEY);
log.trace("Forwarded port - {}.", forwardedPort);
if (!StringUtils.isEmpty(forwardedPort)) {
return forwardedPort;
}
String forwardedHost = request.getHeader(X_FORWARDED_HOST_HEADER_KEY);
if (!StringUtils.isEmpty(forwardedHost)) {
if (forwardedHost.contains(":")) {
return forwardedHost.substring(forwardedHost.indexOf(":"));
} else {
return "HTTP".equals(getScheme(request).toUpperCase()) ?
"80" : "443";
}
}
return Integer.toString(request.getServerPort());
}
}

2
dao/src/main/java/org/thingsboard/server/dao/oauth2/HybridClientRegistrationRepository.java

@ -27,6 +27,7 @@ import java.util.UUID;
@Component
public class HybridClientRegistrationRepository implements ClientRegistrationRepository {
private static final String defaultRedirectUriTemplate = "{baseUrl}/login/oauth2/code/{registrationId}";
@Autowired
private OAuth2Service oAuth2Service;
@ -52,6 +53,7 @@ public class HybridClientRegistrationRepository implements ClientRegistrationRep
.userNameAttributeName(localClientRegistration.getUserNameAttributeName())
.jwkSetUri(localClientRegistration.getJwkSetUri())
.clientAuthenticationMethod(new ClientAuthenticationMethod(localClientRegistration.getClientAuthenticationMethod()))
.redirectUriTemplate(defaultRedirectUriTemplate)
.build();
}
}

Loading…
Cancel
Save