Skip to content

Commit 9417f02

Browse files
committed
Deprecate PortResolver
Closes gh-15972
1 parent 76a5662 commit 9417f02

File tree

8 files changed

+67
-0
lines changed

8 files changed

+67
-0
lines changed

docs/modules/ROOT/pages/migration-7/web.adoc

+43
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,46 @@ Xml::
102102
</b:bean>
103103
----
104104
======
105+
106+
== PortResolver
107+
108+
Spring Security uses an API called `PortResolver` to provide a workaround for a bug in Internet Explorer.
109+
The workaround is no longer necessary and can cause users problems in some scenarios.
110+
For this reason, Spring Security 7 will remove the `PortResolver` interface.
111+
112+
To prepare for this change, users should expose the `PortResolver.NO_OP` as a Bean named `portResolver`.
113+
This ensures that the `PortResolver` implementation that is used is a no-op (e.g. does nothing) which simulates the removal of `PortResolver`.
114+
An example configuration can be found below:
115+
116+
[tabs]
117+
======
118+
Java::
119+
+
120+
[source,java,role="primary"]
121+
----
122+
@Bean
123+
PortResolver portResolver() {
124+
return PortResolver.NO_OP;
125+
}
126+
----
127+
128+
Kotlin::
129+
+
130+
[source,kotlin,role="secondary"]
131+
----
132+
@Bean
133+
open fun portResolver(): PortResolver {
134+
return PortResolver.NO_OP
135+
}
136+
----
137+
138+
Xml::
139+
+
140+
[source,xml,role="secondary"]
141+
----
142+
143+
<util:constant id="portResolver"
144+
static-field="org.springframework.security.web.PortResolver.NO_OP">
145+
----
146+
======
147+

web/src/main/java/org/springframework/security/web/PortResolver.java

+2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
* </p>
2929
*
3030
* @author Ben Alex
31+
* @deprecated This existed for an old IE bug and is no longer need.
3132
*/
33+
@Deprecated(forRemoval = true, since = "6.5")
3234
public interface PortResolver {
3335

3436
PortResolver NO_OP = new PortResolver() {

web/src/main/java/org/springframework/security/web/PortResolverImpl.java

+2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@
3535
* {@link PortMapper}.
3636
*
3737
* @author Ben Alex
38+
* @deprecated This existed for an old IE bug and is no longer need.
3839
*/
40+
@Deprecated(forRemoval = true)
3941
public class PortResolverImpl implements PortResolver {
4042

4143
private PortMapper portMapper = new PortMapperImpl();

web/src/main/java/org/springframework/security/web/access/channel/AbstractRetryEntryPoint.java

+2
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,13 @@ public void setPortMapper(PortMapper portMapper) {
8686
this.portMapper = portMapper;
8787
}
8888

89+
@Deprecated(forRemoval = true)
8990
public void setPortResolver(PortResolver portResolver) {
9091
Assert.notNull(portResolver, "portResolver cannot be null");
9192
this.portResolver = portResolver;
9293
}
9394

95+
@Deprecated(forRemoval = true)
9496
protected final PortResolver getPortResolver() {
9597
return this.portResolver;
9698
}

web/src/main/java/org/springframework/security/web/authentication/LoginUrlAuthenticationEntryPoint.java

+2
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,13 @@ protected PortMapper getPortMapper() {
235235
return this.portMapper;
236236
}
237237

238+
@Deprecated(forRemoval = true)
238239
public void setPortResolver(PortResolver portResolver) {
239240
Assert.notNull(portResolver, "portResolver cannot be null");
240241
this.portResolver = portResolver;
241242
}
242243

244+
@Deprecated(forRemoval = true)
243245
protected PortResolver getPortResolver() {
244246
return this.portResolver;
245247
}

web/src/main/java/org/springframework/security/web/savedrequest/DefaultSavedRequest.java

+13
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,21 @@ public class DefaultSavedRequest implements SavedRequest {
100100

101101
private final String matchingRequestParameterName;
102102

103+
public DefaultSavedRequest(HttpServletRequest request) {
104+
this(request, (String) null);
105+
}
106+
107+
public DefaultSavedRequest(HttpServletRequest request, String matchingRequestParameterName) {
108+
this(request, PortResolver.NO_OP, matchingRequestParameterName);
109+
}
110+
111+
@Deprecated(forRemoval = true)
103112
public DefaultSavedRequest(HttpServletRequest request, PortResolver portResolver) {
104113
this(request, portResolver, null);
105114
}
106115

107116
@SuppressWarnings("unchecked")
117+
@Deprecated(forRemoval = true)
108118
public DefaultSavedRequest(HttpServletRequest request, PortResolver portResolver,
109119
String matchingRequestParameterName) {
110120
Assert.notNull(request, "Request required");
@@ -221,7 +231,10 @@ private void addParameter(String name, String[] values) {
221231
* @param request the actual request to be matched against this one
222232
* @param portResolver used to obtain the server port of the request
223233
* @return true if the request is deemed to match this one.
234+
* @deprecated This is deprecated for removal. Users can compare
235+
* {@link #getRedirectUrl()} to the {@link HttpServletRequest} URL instead.
224236
*/
237+
@Deprecated(forRemoval = true)
225238
public boolean doesRequestMatch(HttpServletRequest request, PortResolver portResolver) {
226239
if (!propertyEquals(this.pathInfo, request.getPathInfo())) {
227240
return false;

web/src/main/java/org/springframework/security/web/savedrequest/HttpSessionRequestCache.java

+1
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ public void setCreateSessionAllowed(boolean createSessionAllowed) {
164164
this.createSessionAllowed = createSessionAllowed;
165165
}
166166

167+
@Deprecated(forRemoval = true)
167168
public void setPortResolver(PortResolver portResolver) {
168169
this.portResolver = portResolver;
169170
}

web/src/test/java/org/springframework/security/MockPortResolver.java

+2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
*
2626
* @author Ben Alex
2727
* @author nomoreFt
28+
* @deprecated
2829
*/
30+
@Deprecated(forRemoval = true)
2931
public class MockPortResolver implements PortResolver {
3032

3133
private static final String HTTPS_SCHEME = "https";

0 commit comments

Comments
 (0)