From d4019053221ed6da2e63576d69a2c6f8fc25d327 Mon Sep 17 00:00:00 2001 From: Kumar Chandrakant Date: Tue, 6 Aug 2019 21:12:34 +0530 Subject: [PATCH 1/4] Adding source code for tutorial tracked under BAEL-3171. --- .../baeldung/jgss/JgssIntegrationTest.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java diff --git a/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java b/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java new file mode 100644 index 000000000000..e322e8999627 --- /dev/null +++ b/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java @@ -0,0 +1,75 @@ +package com.baeldung.jgss; + +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import javax.security.sasl.SaslException; + +import org.ietf.jgss.GSSContext; +import org.ietf.jgss.GSSCredential; +import org.ietf.jgss.GSSException; +import org.ietf.jgss.GSSManager; +import org.ietf.jgss.GSSName; +import org.ietf.jgss.MessageProp; +import org.ietf.jgss.Oid; +import org.junit.After; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +@Ignore +public class JgssIntegrationTest { + + private static final String SERVER_PRINCIPAL = "HTTP/localhost@EXAMPLE.COM"; + private static final String MECHANISM = "1.2.840.113554.1.2.2"; + + GSSContext serverContext; + GSSContext clientContext; + + @Before + public void setUp() throws SaslException, GSSException { + GSSManager manager = GSSManager.getInstance(); + serverContext = manager.createContext((GSSCredential) null); + String serverPrinciple = SERVER_PRINCIPAL; + GSSName serverName = manager.createName(serverPrinciple, null); + Oid krb5Oid = new Oid(MECHANISM); + clientContext = manager.createContext( + serverName, krb5Oid, (GSSCredential) null, GSSContext.DEFAULT_LIFETIME); + clientContext.requestMutualAuth(true); + clientContext.requestConf(true); + clientContext.requestInteg(true); + } + + @Test + public void givenCredential_whenStarted_thenAutenticationWorks() throws SaslException, GSSException { + byte[] serverToken = new byte[0]; + byte[] clientToken = new byte[0]; + clientToken = clientContext.initSecContext(clientToken, 0, clientToken.length); + serverToken = clientToken; + serverToken = serverContext.acceptSecContext(serverToken, 0, serverToken.length); + clientToken = serverToken; + clientToken = clientContext.initSecContext(clientToken, 0, clientToken.length); + assertTrue(serverContext.isEstablished()); + assertTrue(clientContext.isEstablished()); + } + + @Test + public void givenContext_whenStarted_thenSecurityWorks() throws SaslException, GSSException { + byte[] messageBytes = "Baeldung".getBytes(); + MessageProp clientProp = new MessageProp(0, true); + byte[] clientToken = clientContext.wrap(messageBytes, 0, messageBytes.length, clientProp); + byte[] serverToken = clientToken; + MessageProp serverProp = new MessageProp(0, false); + byte[] bytes = serverContext.unwrap(serverToken, 0, serverToken.length, serverProp); + clientContext.verifyMIC(serverToken, 0, serverToken.length, bytes, 0, bytes.length, serverProp); + String string = new String(bytes); + assertEquals("Baeldung", string); + } + + @After + public void tearDown() throws SaslException, GSSException { + serverContext.dispose(); + clientContext.dispose(); + } + +} From b9eac73170a73d47caf8e2a71ca2d5de1683b0a7 Mon Sep 17 00:00:00 2001 From: Kumar Chandrakant Date: Fri, 9 Aug 2019 22:36:11 +0530 Subject: [PATCH 2/4] Incorporated review comments on the article. --- .../baeldung/jgss/JgssIntegrationTest.java | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java b/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java index e322e8999627..54aeeedc866b 100644 --- a/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java +++ b/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java @@ -19,7 +19,7 @@ @Ignore public class JgssIntegrationTest { - + private static final String SERVER_PRINCIPAL = "HTTP/localhost@EXAMPLE.COM"; private static final String MECHANISM = "1.2.840.113554.1.2.2"; @@ -33,8 +33,7 @@ public void setUp() throws SaslException, GSSException { String serverPrinciple = SERVER_PRINCIPAL; GSSName serverName = manager.createName(serverPrinciple, null); Oid krb5Oid = new Oid(MECHANISM); - clientContext = manager.createContext( - serverName, krb5Oid, (GSSCredential) null, GSSContext.DEFAULT_LIFETIME); + clientContext = manager.createContext(serverName, krb5Oid, (GSSCredential) null, GSSContext.DEFAULT_LIFETIME); clientContext.requestMutualAuth(true); clientContext.requestConf(true); clientContext.requestInteg(true); @@ -42,27 +41,38 @@ public void setUp() throws SaslException, GSSException { @Test public void givenCredential_whenStarted_thenAutenticationWorks() throws SaslException, GSSException { - byte[] serverToken = new byte[0]; - byte[] clientToken = new byte[0]; - clientToken = clientContext.initSecContext(clientToken, 0, clientToken.length); - serverToken = clientToken; - serverToken = serverContext.acceptSecContext(serverToken, 0, serverToken.length); - clientToken = serverToken; - clientToken = clientContext.initSecContext(clientToken, 0, clientToken.length); + byte[] serverToken; + byte[] clientToken; + + // On the client-side + clientToken = clientContext.initSecContext(new byte[0], 0, 0); + // sendToServer(clientToken); // This is supposed to be send over the network + + // On the server-side + serverToken = serverContext.acceptSecContext(clientToken, 0, clientToken.length); + // sendToClient(serverToken); // This is supposed to be send over the network + + // Back on the client-side + clientContext.initSecContext(serverToken, 0, serverToken.length); + assertTrue(serverContext.isEstablished()); assertTrue(clientContext.isEstablished()); } @Test public void givenContext_whenStarted_thenSecurityWorks() throws SaslException, GSSException { + // On the client-side byte[] messageBytes = "Baeldung".getBytes(); MessageProp clientProp = new MessageProp(0, true); byte[] clientToken = clientContext.wrap(messageBytes, 0, messageBytes.length, clientProp); - byte[] serverToken = clientToken; + // sendToServer(clientToken); // This is supposed to be send over the network + + // On the server-side MessageProp serverProp = new MessageProp(0, false); - byte[] bytes = serverContext.unwrap(serverToken, 0, serverToken.length, serverProp); - clientContext.verifyMIC(serverToken, 0, serverToken.length, bytes, 0, bytes.length, serverProp); + byte[] bytes = serverContext.unwrap(clientToken, 0, clientToken.length, serverProp); + clientContext.verifyMIC(clientToken, 0, clientToken.length, bytes, 0, bytes.length, serverProp); String string = new String(bytes); + assertEquals("Baeldung", string); } From 7d84fe8ca45b393abfe4420aea6c8cf858b90506 Mon Sep 17 00:00:00 2001 From: Kumar Chandrakant Date: Fri, 9 Aug 2019 22:44:49 +0530 Subject: [PATCH 3/4] Resolved merge conflicts. --- .../baeldung/jgss/JgssIntegrationTest.java | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java b/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java index b592d57862b7..54aeeedc866b 100644 --- a/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java +++ b/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java @@ -19,11 +19,7 @@ @Ignore public class JgssIntegrationTest { -<<<<<<< HEAD -======= - ->>>>>>> master private static final String SERVER_PRINCIPAL = "HTTP/localhost@EXAMPLE.COM"; private static final String MECHANISM = "1.2.840.113554.1.2.2"; @@ -37,12 +33,7 @@ public void setUp() throws SaslException, GSSException { String serverPrinciple = SERVER_PRINCIPAL; GSSName serverName = manager.createName(serverPrinciple, null); Oid krb5Oid = new Oid(MECHANISM); -<<<<<<< HEAD clientContext = manager.createContext(serverName, krb5Oid, (GSSCredential) null, GSSContext.DEFAULT_LIFETIME); -======= - clientContext = manager.createContext( - serverName, krb5Oid, (GSSCredential) null, GSSContext.DEFAULT_LIFETIME); ->>>>>>> master clientContext.requestMutualAuth(true); clientContext.requestConf(true); clientContext.requestInteg(true); @@ -50,7 +41,6 @@ public void setUp() throws SaslException, GSSException { @Test public void givenCredential_whenStarted_thenAutenticationWorks() throws SaslException, GSSException { -<<<<<<< HEAD byte[] serverToken; byte[] clientToken; @@ -65,22 +55,12 @@ public void givenCredential_whenStarted_thenAutenticationWorks() throws SaslExce // Back on the client-side clientContext.initSecContext(serverToken, 0, serverToken.length); -======= - byte[] serverToken = new byte[0]; - byte[] clientToken = new byte[0]; - clientToken = clientContext.initSecContext(clientToken, 0, clientToken.length); - serverToken = clientToken; - serverToken = serverContext.acceptSecContext(serverToken, 0, serverToken.length); - clientToken = serverToken; - clientToken = clientContext.initSecContext(clientToken, 0, clientToken.length); ->>>>>>> master assertTrue(serverContext.isEstablished()); assertTrue(clientContext.isEstablished()); } @Test public void givenContext_whenStarted_thenSecurityWorks() throws SaslException, GSSException { -<<<<<<< HEAD // On the client-side byte[] messageBytes = "Baeldung".getBytes(); MessageProp clientProp = new MessageProp(0, true); @@ -93,16 +73,6 @@ public void givenContext_whenStarted_thenSecurityWorks() throws SaslException, G clientContext.verifyMIC(clientToken, 0, clientToken.length, bytes, 0, bytes.length, serverProp); String string = new String(bytes); -======= - byte[] messageBytes = "Baeldung".getBytes(); - MessageProp clientProp = new MessageProp(0, true); - byte[] clientToken = clientContext.wrap(messageBytes, 0, messageBytes.length, clientProp); - byte[] serverToken = clientToken; - MessageProp serverProp = new MessageProp(0, false); - byte[] bytes = serverContext.unwrap(serverToken, 0, serverToken.length, serverProp); - clientContext.verifyMIC(serverToken, 0, serverToken.length, bytes, 0, bytes.length, serverProp); - String string = new String(bytes); ->>>>>>> master assertEquals("Baeldung", string); } From a49d8518d27c37c4aa13597895fa07c6993abc0f Mon Sep 17 00:00:00 2001 From: Kumar Chandrakant Date: Fri, 9 Aug 2019 23:45:27 +0530 Subject: [PATCH 4/4] Incorporated review comments on the article. --- .../src/test/java/com/baeldung/jgss/JgssIntegrationTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java b/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java index 54aeeedc866b..ce784bcae6bd 100644 --- a/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java +++ b/core-java-modules/core-java-security/src/test/java/com/baeldung/jgss/JgssIntegrationTest.java @@ -70,7 +70,6 @@ public void givenContext_whenStarted_thenSecurityWorks() throws SaslException, G // On the server-side MessageProp serverProp = new MessageProp(0, false); byte[] bytes = serverContext.unwrap(clientToken, 0, clientToken.length, serverProp); - clientContext.verifyMIC(clientToken, 0, clientToken.length, bytes, 0, bytes.length, serverProp); String string = new String(bytes); assertEquals("Baeldung", string);