Hi Yauheni,
today I managed to make real progress on this issue.
It turned out that things aren't as bad as I thought.
After the following few changes, I was able to compile the system:
diff --git a/src/server/parser/SSOConnect.java b/src/server/parser/SSOConnect.java
index 47ddb03..2ac7d05 100644
--- a/src/server/parser/SSOConnect.java
+++ b/src/server/parser/SSOConnect.java
@@ -28,7 +28,8 @@ package de.independit.scheduler.server.parser;
import java.io.*;
import java.util.*;
import java.lang.*;
-import javax.xml.bind.DatatypeConverter;
+import java.util.Base64;
+
import de.independit.scheduler.server.*;
import de.independit.scheduler.server.util.*;
@@ -89,11 +90,11 @@ public class SSOConnect extends Connect
provider = (WindowsAuthProviderImpl)(sysEnv.cEnv.SSOInfo.get(PROVIDER));
}
try {
- byteToken = DatatypeConverter.parseBase64Binary(token);
+ byteToken = Base64.getDecoder().decode(token);
serverContext = provider.acceptSecurityToken("server-connection", byteToken, "Negotiate");
byteToken = serverContext.getToken();
if (byteToken != null)
- token = DatatypeConverter.printBase64Binary(byteToken);
+ token = Base64.getEncoder().encodeToString(byteToken);
else
token = "null";
diff --git a/src/shell/SDMSServerConnection.java b/src/shell/SDMSServerConnection.java
index c3848db..11cbc3c 100644
--- a/src/shell/SDMSServerConnection.java
+++ b/src/shell/SDMSServerConnection.java
@@ -32,7 +32,7 @@ import java.lang.*;
import java.net.*;
import javax.net.ssl.*;
import java.security.*;
-import javax.xml.bind.DatatypeConverter;
+import java.util.Base64;
import java.nio.charset.Charset;
@@ -256,7 +256,7 @@ public class SDMSServerConnection
try {
clientContext = WindowsSecurityContextImpl.getCurrent( "Negotiate", spn );
byteToken = clientContext.getToken();
- strToken = DatatypeConverter.printBase64Binary(byteToken);
+ strToken = Base64.getEncoder().encodeToString(byteToken);
} catch (Throwable e) {
clientContext.dispose();
result = new SDMSOutput();
@@ -280,12 +280,12 @@ public class SDMSServerConnection
int idxToken = result.container.indexForName (null, "TOKEN");
Vector v_data = (Vector)(result.container.dataset.get(0));
strToken = (String)(v_data.get(idxToken));
- byteToken = DatatypeConverter.parseBase64Binary(strToken);
+ byteToken = Base64.getDecoder().decode(strToken);
try {
SecBufferDesc continueToken = new SecBufferDesc(Sspi.SECBUFFER_TOKEN, byteToken);
clientContext.initialize(clientContext.getHandle(), continueToken, spn);
byteToken = clientContext.getToken();
- strToken = DatatypeConverter.printBase64Binary(byteToken);
+ strToken = Base64.getEncoder().encodeToString(byteToken);
} catch (Throwable e) {
result = new SDMSOutput();
result.setError(new SDMSOutputError("Desktop-0006", "Exception getting clientToken:" + e.toString() + " !"));
Now it compiles, we can start testing. And obviously the only thing that could cause problems is the single sign-on functionality, at least in theory.
It is, of course, always possible that something else has changed between Java 8 and Java 11 (which is the Java release I've been using here).
But at least we've made a big step into the right direction.
Best regards,
Ronald