SAML receiverEndpoint

This commit is contained in:
MaxKey 2022-11-08 15:32:50 +08:00
parent df2f99088a
commit 3ecfa6d480
4 changed files with 27 additions and 24 deletions

View File

@ -28,6 +28,7 @@ import org.opensaml.xml.parse.ParserPool;
import org.opensaml.xml.util.DatatypeHelper; import org.opensaml.xml.util.DatatypeHelper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.security.web.util.UrlUtils;
public class OpenHTTPPostDecoder extends HTTPPostDecoder { public class OpenHTTPPostDecoder extends HTTPPostDecoder {
private final Logger log = LoggerFactory.getLogger(OpenHTTPPostDecoder.class); private final Logger log = LoggerFactory.getLogger(OpenHTTPPostDecoder.class);
@ -108,14 +109,15 @@ public class OpenHTTPPostDecoder extends HTTPPostDecoder {
if (!(inTransport instanceof HttpServletRequestAdapter)) { if (!(inTransport instanceof HttpServletRequestAdapter)) {
throw new MessageDecodingException("Message context InTransport instance was an unsupported type"); throw new MessageDecodingException("Message context InTransport instance was an unsupported type");
} }
HttpServletRequest httpRequest = ((HttpServletRequestAdapter) inTransport).getWrappedRequest(); HttpServletRequest httpRequest =
((HttpServletRequestAdapter) inTransport).getWrappedRequest();
StringBuffer urlBuilder = httpRequest.getRequestURL(); String requestUrl = UrlUtils.buildFullRequestUrl(httpRequest);
if(requestUrl.indexOf("?") > -1) {
String tempUrl = urlBuilder.toString(); return requestUrl.substring(0, requestUrl.indexOf("?"));
// 从http协议头开始跳过前面两个斜杠 }else {
tempUrl = tempUrl.substring(tempUrl.indexOf("/", 8) + 1); return requestUrl;
return receiverEndpoint + tempUrl; }
} }
/** /**

View File

@ -28,6 +28,7 @@ import org.opensaml.xml.parse.ParserPool;
import org.opensaml.xml.util.DatatypeHelper; import org.opensaml.xml.util.DatatypeHelper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.security.web.util.UrlUtils;
public class OpenHTTPPostSimpleSignDecoder extends HTTPPostSimpleSignDecoder { public class OpenHTTPPostSimpleSignDecoder extends HTTPPostSimpleSignDecoder {
private final Logger log = LoggerFactory.getLogger(OpenHTTPPostSimpleSignDecoder.class); private final Logger log = LoggerFactory.getLogger(OpenHTTPPostSimpleSignDecoder.class);
@ -113,14 +114,15 @@ public class OpenHTTPPostSimpleSignDecoder extends HTTPPostSimpleSignDecoder {
if (!(inTransport instanceof HttpServletRequestAdapter)) { if (!(inTransport instanceof HttpServletRequestAdapter)) {
throw new MessageDecodingException("Message context InTransport instance was an unsupported type"); throw new MessageDecodingException("Message context InTransport instance was an unsupported type");
} }
HttpServletRequest httpRequest = ((HttpServletRequestAdapter) inTransport).getWrappedRequest(); HttpServletRequest httpRequest =
((HttpServletRequestAdapter) inTransport).getWrappedRequest();
StringBuffer urlBuilder = httpRequest.getRequestURL(); String requestUrl = UrlUtils.buildFullRequestUrl(httpRequest);
if(requestUrl.indexOf("?") > -1) {
String tempUrl = urlBuilder.toString(); return requestUrl.substring(0, requestUrl.indexOf("?"));
// 从http协议头开始跳过前面两个斜杠 }else {
tempUrl = tempUrl.substring(tempUrl.indexOf("/", 8) + 1); return requestUrl;
return receiverEndpoint + tempUrl; }
} }
/** /**

View File

@ -28,6 +28,7 @@ import org.opensaml.xml.parse.ParserPool;
import org.opensaml.xml.util.DatatypeHelper; import org.opensaml.xml.util.DatatypeHelper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.security.web.util.UrlUtils;
public class OpenHTTPRedirectDecoder extends HTTPRedirectDeflateDecoder { public class OpenHTTPRedirectDecoder extends HTTPRedirectDeflateDecoder {
private final Logger log = LoggerFactory.getLogger(OpenHTTPRedirectDecoder.class); private final Logger log = LoggerFactory.getLogger(OpenHTTPRedirectDecoder.class);
@ -121,15 +122,14 @@ public class OpenHTTPRedirectDecoder extends HTTPRedirectDeflateDecoder {
throw new MessageDecodingException( throw new MessageDecodingException(
"Message context InTransport instance was an unsupported type"); "Message context InTransport instance was an unsupported type");
} }
HttpServletRequest httpRequest = ((HttpServletRequestAdapter) inTransport) HttpServletRequest httpRequest =
.getWrappedRequest(); ((HttpServletRequestAdapter) inTransport).getWrappedRequest();
String requestUrl = UrlUtils.buildFullRequestUrl(httpRequest);
StringBuffer urlBuilder = httpRequest.getRequestURL(); if(requestUrl.indexOf("?") > -1) {
return requestUrl.substring(0, requestUrl.indexOf("?"));
String tempUrl = urlBuilder.toString(); }else {
// 从http协议头开始跳过前面两个斜杠 return requestUrl;
tempUrl = tempUrl.substring(tempUrl.indexOf("/", 8) + 1); }
return receiverEndpoint + tempUrl;
} }
/** /**

View File

@ -20,7 +20,6 @@
*/ */
package org.maxkey.web.apps.contorller; package org.maxkey.web.apps.contorller;
import org.maxkey.constants.ConstsProtocols;
import org.maxkey.crypto.password.PasswordReciprocal; import org.maxkey.crypto.password.PasswordReciprocal;
import org.maxkey.entity.apps.Apps; import org.maxkey.entity.apps.Apps;
import org.maxkey.persistence.service.AppsService; import org.maxkey.persistence.service.AppsService;