diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/SavedRequestAwareAuthenticationSuccessHandler.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/SavedRequestAwareAuthenticationSuccessHandler.java
index 51dea2b1b..008df5ef1 100644
--- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/SavedRequestAwareAuthenticationSuccessHandler.java
+++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/SavedRequestAwareAuthenticationSuccessHandler.java
@@ -102,7 +102,7 @@ public class SavedRequestAwareAuthenticationSuccessHandler
logger.trace("CAS " + request.getParameter(WebConstants.CAS_SERVICE_PARAMETER));
if (request.getParameter(WebConstants.CAS_SERVICE_PARAMETER) != null
&& request.getParameter(WebConstants.CAS_SERVICE_PARAMETER).startsWith("http")) {
- targetUrl = WebContext.getHttpContextPath() + "/authz/cas/login?service="
+ targetUrl = WebContext.getHttpContextPath(true) + "/authz/cas/login?service="
+ request.getParameter(WebConstants.CAS_SERVICE_PARAMETER);
}
targetUrl = targetUrl == null ? "/forwardindex" : targetUrl;
diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/FileUploadEndpoint.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/FileUploadEndpoint.java
similarity index 98%
rename from maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/FileUploadEndpoint.java
rename to maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/FileUploadEndpoint.java
index b808e09ec..1ecbbc67d 100644
--- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/contorller/FileUploadEndpoint.java
+++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/web/FileUploadEndpoint.java
@@ -15,7 +15,7 @@
*/
-package org.maxkey.web.contorller;
+package org.maxkey.authn.web;
import java.io.IOException;
diff --git a/maxkey-authentications/maxkey-authentication-social/src/main/java/org/maxkey/authn/support/socialsignon/SocialSignOnEndpoint.java b/maxkey-authentications/maxkey-authentication-social/src/main/java/org/maxkey/authn/support/socialsignon/SocialSignOnEndpoint.java
index 69b7440c6..79b61334a 100644
--- a/maxkey-authentications/maxkey-authentication-social/src/main/java/org/maxkey/authn/support/socialsignon/SocialSignOnEndpoint.java
+++ b/maxkey-authentications/maxkey-authentication-social/src/main/java/org/maxkey/authn/support/socialsignon/SocialSignOnEndpoint.java
@@ -37,7 +37,6 @@ import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@@ -55,11 +54,11 @@ public class SocialSignOnEndpoint extends AbstractSocialSignOnEndpoint{
@RequestMapping(value={"/authorize/{provider}"}, method = RequestMethod.GET)
@ResponseBody
public ResponseEntity> authorize( HttpServletRequest request,
- @PathVariable String provider,
- @RequestHeader("Origin") String originURL
+ @PathVariable String provider
) {
_logger.trace("SocialSignOn provider : " + provider);
String instId = WebContext.getInst().getId();
+ String originURL =WebContext.getHttpContextPath(request,false);
String authorizationUrl =
buildAuthRequest(
instId,
@@ -74,9 +73,9 @@ public class SocialSignOnEndpoint extends AbstractSocialSignOnEndpoint{
@RequestMapping(value={"/scanqrcode/{provider}"}, method = RequestMethod.GET)
@ResponseBody
public ResponseEntity> scanQRCode(HttpServletRequest request,
- @PathVariable("provider") String provider,
- @RequestHeader("Origin") String originURL) {
+ @PathVariable("provider") String provider) {
String instId = WebContext.getInst().getId();
+ String originURL =WebContext.getHttpContextPath(request,false);
AuthRequest authRequest =
buildAuthRequest(
instId,
@@ -102,10 +101,11 @@ public class SocialSignOnEndpoint extends AbstractSocialSignOnEndpoint{
@RequestMapping(value={"/bind/{provider}"}, method = RequestMethod.GET)
public ResponseEntity> bind(@PathVariable String provider,
- @RequestHeader("Origin") String originURL,
- @CurrentUser UserInfo userInfo) {
+ @CurrentUser UserInfo userInfo,
+ HttpServletRequest request) {
//auth call back may exception
try {
+ String originURL =WebContext.getHttpContextPath(request,false);
SocialsAssociate socialsAssociate =
this.authCallback(userInfo.getInstId(),provider,originURL + applicationConfig.getFrontendUri());
socialsAssociate.setSocialUserInfo(accountJsonString);
@@ -127,9 +127,10 @@ public class SocialSignOnEndpoint extends AbstractSocialSignOnEndpoint{
@RequestMapping(value={"/callback/{provider}"}, method = RequestMethod.GET)
public ResponseEntity> callback(@PathVariable String provider,
- @RequestHeader("Origin") String originURL) {
+ HttpServletRequest request) {
//auth call back may exception
try {
+ String originURL =WebContext.getHttpContextPath(request,false);
String instId = WebContext.getInst().getId();
SocialsAssociate socialsAssociate =
this.authCallback(instId,provider,originURL + applicationConfig.getFrontendUri());
diff --git a/maxkey-core/src/main/java/org/maxkey/web/InitializeContext.java b/maxkey-core/src/main/java/org/maxkey/web/InitializeContext.java
index 3bc107e5f..5b01c53bc 100644
--- a/maxkey-core/src/main/java/org/maxkey/web/InitializeContext.java
+++ b/maxkey-core/src/main/java/org/maxkey/web/InitializeContext.java
@@ -231,8 +231,8 @@ public class InitializeContext extends HttpServlet {
*/
public void showLicense() {
_logger.info("-----------------------------------------------------------");
- _logger.info("+ MaxKey ");
- _logger.info("+ Single Sign On ( SSO ) ");
+ _logger.info("+ MaxKey Community Edition ");
+ _logger.info("+ Single Sign On ( SSO ) ");
_logger.info("+ Version {}",
WebContext.properties.getProperty("application.formatted-version"));
_logger.info("+");
diff --git a/maxkey-core/src/main/java/org/maxkey/web/WebContext.java b/maxkey-core/src/main/java/org/maxkey/web/WebContext.java
index e72949115..9833cea5c 100644
--- a/maxkey-core/src/main/java/org/maxkey/web/WebContext.java
+++ b/maxkey-core/src/main/java/org/maxkey/web/WebContext.java
@@ -179,9 +179,9 @@ public final class WebContext {
*
* @return String HttpContextPath
*/
- public static String getHttpContextPath() {
+ public static String getHttpContextPath(boolean isContextPath) {
HttpServletRequest httpServletRequest = WebContext.getRequest();
- return getHttpContextPath(httpServletRequest);
+ return getHttpContextPath(httpServletRequest,isContextPath);
}
/**
@@ -190,32 +190,44 @@ public final class WebContext {
* @return String eg:http://192.168.1.20:9080/webcontext or
* http://www.website.com/webcontext
*/
- public static String getHttpContextPath(HttpServletRequest httpServletRequest) {
+ public static String getHttpContextPath(HttpServletRequest request,boolean isContextPath) {
ApplicationConfig applicationConfig =
WebContext.getBean("applicationConfig",ApplicationConfig.class);
_logger.trace("Config ServerPrefix " + applicationConfig.getServerPrefix());
_logger.trace("Config DomainName " + applicationConfig.getDomainName());
- _logger.trace("ServerName " + httpServletRequest.getServerName());
+ _logger.trace("ServerName " + request.getServerName());
- String httpContextPath ="";
- if (httpServletRequest.getServerName().matches(ipAddressRegex)
- ||httpServletRequest.getServerName().equalsIgnoreCase("localhost")) {
- httpContextPath = httpServletRequest.getScheme().toLowerCase()
- + "://"+httpServletRequest.getServerName();
+ StringBuilder url = new StringBuilder();
+ if (request.getServerName().matches(ipAddressRegex)
+ ||request.getServerName().equalsIgnoreCase("localhost")) {
+ url.append(request.getScheme().toLowerCase())
+ .append("://").append(request.getServerName())
+ .append(request.getServerPort());
}else {
- httpContextPath = applicationConfig.getServerName() ;
+ String scheme = request.getScheme().toLowerCase();
+ String serverName = request.getServerName();
+ int serverPort = request.getServerPort();
+
+ url.append(scheme).append("://").append(serverName);
+ // Only add port if not default
+ if ("http".equals(scheme)) {
+ if (serverPort != 80) {
+ url.append(":").append(serverPort);
+ }
+ }
+ else if ("https".equals(scheme)) {
+ if (serverPort != 443) {
+ url.append(":").append(serverPort);
+ }
+ }
}
- int port = httpServletRequest.getServerPort();
- if(!(port==80 || port==443)){
- httpContextPath += ":"+port;
+ if(isContextPath) {
+ url.append(request.getContextPath());
}
-
- httpContextPath += httpServletRequest.getContextPath() + "";
-
- _logger.trace("httpContextPath " + httpContextPath);
- return httpContextPath;
+ _logger.trace("httpContextPath {}" , url);
+ return url.toString();
}
diff --git a/maxkey-core/src/main/java/org/maxkey/web/tag/BasePathTagDirective.java b/maxkey-core/src/main/java/org/maxkey/web/tag/BasePathTagDirective.java
index c57d73e7c..dbfd86494 100644
--- a/maxkey-core/src/main/java/org/maxkey/web/tag/BasePathTagDirective.java
+++ b/maxkey-core/src/main/java/org/maxkey/web/tag/BasePathTagDirective.java
@@ -49,7 +49,7 @@ public class BasePathTagDirective implements TemplateDirectiveModel {
public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
throws TemplateException, IOException {
- env.getOut().append(WebContext.getHttpContextPath(request));
+ env.getOut().append(WebContext.getHttpContextPath(request,true));
}
diff --git a/maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/metadata/endpoint/SamlMetadataEndpoint.java b/maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/metadata/endpoint/SamlMetadataEndpoint.java
index bed6e4b08..4234ed7d9 100644
--- a/maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/metadata/endpoint/SamlMetadataEndpoint.java
+++ b/maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/metadata/endpoint/SamlMetadataEndpoint.java
@@ -111,15 +111,15 @@ public class SamlMetadataEndpoint {
IDPSSODescriptor descriptor = metadataGenerator.buildIDPSSODescriptor();
- descriptor.getSingleSignOnServices().add(metadataGenerator.getSingleSignOnService(WebContext.getHttpContextPath()+"/authz/saml20/"+appId,null));
+ descriptor.getSingleSignOnServices().add(metadataGenerator.getSingleSignOnService(WebContext.getHttpContextPath(true)+"/authz/saml20/"+appId,null));
- descriptor.getSingleSignOnServices().add(metadataGenerator.getSingleSignOnService(WebContext.getHttpContextPath()+"/authz/saml20/"+appId,SAMLConstants.SAML2_REDIRECT_BINDING_URI));
+ descriptor.getSingleSignOnServices().add(metadataGenerator.getSingleSignOnService(WebContext.getHttpContextPath(true)+"/authz/saml20/"+appId,SAMLConstants.SAML2_REDIRECT_BINDING_URI));
- descriptor.getSingleSignOnServices().add(metadataGenerator.getSingleSignOnService(WebContext.getHttpContextPath()+"/authz/saml20/"+appId,SAMLConstants.SAML2_POST_SIMPLE_SIGN_BINDING_URI));
+ descriptor.getSingleSignOnServices().add(metadataGenerator.getSingleSignOnService(WebContext.getHttpContextPath(true)+"/authz/saml20/"+appId,SAMLConstants.SAML2_POST_SIMPLE_SIGN_BINDING_URI));
- descriptor.getSingleLogoutServices().add(metadataGenerator.getSingleLogoutService(WebContext.getHttpContextPath()+"/logout",null));
+ descriptor.getSingleLogoutServices().add(metadataGenerator.getSingleLogoutService(WebContext.getHttpContextPath(true)+"/logout",null));
- descriptor.getManageNameIDServices().add(metadataGenerator.getManageNameIDService(WebContext.getHttpContextPath()+"/saml/metadata/" + WebConstants.MXK_METADATA_PREFIX + appId + ".xml"));
+ descriptor.getManageNameIDServices().add(metadataGenerator.getManageNameIDService(WebContext.getHttpContextPath(true)+"/saml/metadata/" + WebConstants.MXK_METADATA_PREFIX + appId + ".xml"));
descriptor.getKeyDescriptors().add(metadataGenerator.generateEncryptionKeyDescriptor(signingCredential));
diff --git a/maxkey-web-frontend/maxkey-web-app/src/app/routes/config/profile/profile.component.html b/maxkey-web-frontend/maxkey-web-app/src/app/routes/config/profile/profile.component.html
index 73eea2561..5473ff8c5 100644
--- a/maxkey-web-frontend/maxkey-web-app/src/app/routes/config/profile/profile.component.html
+++ b/maxkey-web-frontend/maxkey-web-app/src/app/routes/config/profile/profile.component.html
@@ -51,7 +51,7 @@