From ad2351343a2b4e71e4d1633534f253ff5a325bf2 Mon Sep 17 00:00:00 2001 From: ravinforu Date: Fri, 5 Jun 2026 12:47:23 +0530 Subject: [PATCH] WinRmClient changes to remove the usage of PrivilegedSendMessage private class by modifying Subject.doAs to Subject.callAs by directly passing the required Document and SoapAction. --- .../overthere/winrm/WinRmClient.java | 33 +++---------------- 1 file changed, 4 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/xebialabs/overthere/winrm/WinRmClient.java b/src/main/java/com/xebialabs/overthere/winrm/WinRmClient.java index 6ebb5e26..975f1e55 100644 --- a/src/main/java/com/xebialabs/overthere/winrm/WinRmClient.java +++ b/src/main/java/com/xebialabs/overthere/winrm/WinRmClient.java @@ -342,7 +342,7 @@ private static String getUUID() { private Document sendRequest(final Document requestDocument, final SoapAction soapAction) { if (enableKerberos) { - return runPrivileged(new PrivilegedSendMessage(requestDocument, soapAction)); + return runPrivileged(requestDocument, soapAction); } else { return doSendRequest(requestDocument, soapAction); } @@ -351,46 +351,21 @@ private Document sendRequest(final Document requestDocument, final SoapAction so /** * Performs the JAAS login and run the sendRequest method within a privileged scope. */ - private Document runPrivileged(final PrivilegedSendMessage privilegedSendMessage) { + private Document runPrivileged(final Document requestDocument, final SoapAction soapAction) { final CallbackHandler handler = new ProvidedAuthCallback(username, password); Document result; try { final LoginContext lc = new LoginContext("", null, handler, new KerberosJaasConfiguration(kerberosDebug, kerberosTicketCache)); lc.login(); - result = Subject.doAs(lc.getSubject(), privilegedSendMessage); + result = Subject.callAs(lc.getSubject(), () -> doSendRequest(requestDocument, soapAction)); } catch (LoginException e) { throw new WinRmRuntimeIOException("Login failure sending message on " + targetURL + " error: " + e.getMessage(), - privilegedSendMessage.getRequestDocument(), null, e); - } catch (PrivilegedActionException e) { - throw new WinRmRuntimeIOException("Failure sending message on " + targetURL + " error: " + e.getMessage(), - privilegedSendMessage.getRequestDocument(), null, e.getException()); + requestDocument, null, e); } return result; } - /** - * PrivilegedExceptionAction that wraps the internal sendRequest - */ - private class PrivilegedSendMessage implements PrivilegedExceptionAction { - private Document requestDocument; - private SoapAction soapAction; - - private PrivilegedSendMessage(final Document requestDocument, final SoapAction soapAction) { - this.requestDocument = requestDocument; - this.soapAction = soapAction; - } - - @Override - public Document run() throws Exception { - return WinRmClient.this.doSendRequest(requestDocument, soapAction); - } - - public Document getRequestDocument() { - return requestDocument; - } - } - /** * Internal sendRequest, performs the HTTP request and returns the result document. */