Skip to content

Commit a158ff4

Browse files
committed
Return SslInfo only if X509Certificate[] present
Issue: SPR-16842
1 parent a71bd7c commit a158ff4

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

spring-web/src/main/java/org/springframework/http/server/reactive/DefaultSslInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ final class DefaultSslInfo implements SslInfo {
4040
private final X509Certificate[] peerCertificates;
4141

4242

43-
DefaultSslInfo(String sessionId, X509Certificate[] peerCertificates) {
43+
DefaultSslInfo(@Nullable String sessionId, X509Certificate[] peerCertificates) {
4444
Assert.notNull(peerCertificates, "No SSL certificates");
4545
this.sessionId = sessionId;
4646
this.peerCertificates = peerCertificates;

spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpRequest.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,6 @@
5757
*/
5858
class ServletServerHttpRequest extends AbstractServerHttpRequest {
5959

60-
private static final String X509_CERTIFICATE_ATTRIBUTE = "javax.servlet.request.X509Certificate";
61-
62-
private static final String SSL_SESSION_ID_ATTRIBUTE = "javax.servlet.request.ssl_session_id";
63-
6460
static final DataBuffer EOF_BUFFER = new DefaultDataBufferFactory().allocateBuffer(0);
6561

6662

@@ -178,12 +174,19 @@ public InetSocketAddress getRemoteAddress() {
178174

179175
@Nullable
180176
protected SslInfo initSslInfo() {
181-
if (!this.request.isSecure()) {
182-
return null;
183-
}
184-
return new DefaultSslInfo(
185-
(String) request.getAttribute(SSL_SESSION_ID_ATTRIBUTE),
186-
(X509Certificate[]) request.getAttribute(X509_CERTIFICATE_ATTRIBUTE));
177+
X509Certificate[] certificates = getX509Certificates();
178+
return certificates != null ? new DefaultSslInfo(getSslSessionId(), certificates) : null;
179+
}
180+
181+
@Nullable
182+
private String getSslSessionId() {
183+
return (String) this.request.getAttribute("javax.servlet.request.ssl_session_id");
184+
}
185+
186+
@Nullable
187+
private X509Certificate[] getX509Certificates() {
188+
String name = "javax.servlet.request.X509Certificate";
189+
return (X509Certificate[]) this.request.getAttribute(name);
187190
}
188191

189192
@Override

0 commit comments

Comments
 (0)