From a39d16cabc47070d1f9abb6b719f53f90aa4b625 Mon Sep 17 00:00:00 2001 From: "jm+jradius@kubek.fr" Date: Mon, 19 Jun 2017 02:37:33 +0200 Subject: [PATCH 1/2] radius auth junit tests --- .../testAuth/TestRadiusCLientAuth.java | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 example/src/test/java/net/jradius/testAuth/TestRadiusCLientAuth.java diff --git a/example/src/test/java/net/jradius/testAuth/TestRadiusCLientAuth.java b/example/src/test/java/net/jradius/testAuth/TestRadiusCLientAuth.java new file mode 100644 index 0000000..13253f2 --- /dev/null +++ b/example/src/test/java/net/jradius/testAuth/TestRadiusCLientAuth.java @@ -0,0 +1,120 @@ +package net.jradius.testAuth; + +import static org.junit.Assert.*; + +import java.io.IOException; +import java.net.Inet4Address; +import java.net.InetAddress; +import java.security.NoSuchAlgorithmException; + +import org.junit.Ignore; +import org.junit.Test; + +import net.jradius.client.RadiusClient; +import net.jradius.client.auth.EAPTTLSAuthenticator; +import net.jradius.client.auth.PEAPAuthenticator; +import net.jradius.client.auth.RadiusAuthenticator; +import net.jradius.dictionary.Attr_CleartextPassword; +import net.jradius.dictionary.Attr_Password; +import net.jradius.dictionary.Attr_UserName; +import net.jradius.dictionary.Attr_UserPassword; +import net.jradius.exception.RadiusException; +import net.jradius.exception.UnknownAttributeException; +import net.jradius.packet.AccessAccept; +import net.jradius.packet.AccessRequest; +import net.jradius.packet.RadiusResponse; +import net.jradius.packet.attribute.AttributeFactory; + +/** + * @author jmk + * + */ +public class TestRadiusCLientAuth { + + @Test + @Ignore("This test require a radius server rinning on localhost") + public void testPap() throws IOException, UnknownAttributeException, NoSuchAlgorithmException, RadiusException{ + InetAddress localhost = Inet4Address.getLocalHost(); + String secret = "testing123"; + RadiusClient rc = new RadiusClient(localhost,secret,1812,1813,2000); + AccessRequest accessRequest = new AccessRequest(); + RadiusAuthenticator auth = RadiusClient.getAuthProtocol("pap"); + accessRequest.addAttribute(new Attr_UserName("bob")); + auth.setPassword(new Attr_CleartextPassword("hello")); + AttributeFactory.loadAttributeDictionary("net.jradius.dictionary.AttributeDictionaryImpl"); + + int retries =0; + RadiusResponse response = rc.authenticate(accessRequest, auth, 0); + assertTrue(response instanceof AccessAccept); + } + + @Test + @Ignore("This test require a radius server rinning on localhost") + public void testChap() throws IOException, UnknownAttributeException, NoSuchAlgorithmException, RadiusException{ + InetAddress localhost = Inet4Address.getLocalHost(); + String secret = "testing123"; + RadiusClient rc = new RadiusClient(localhost,secret,1812,1813,2000); + AccessRequest accessRequest = new AccessRequest(); + RadiusAuthenticator auth = RadiusClient.getAuthProtocol("chap"); + accessRequest.addAttribute(new Attr_UserName("bob")); + auth.setPassword(new Attr_CleartextPassword("hello")); + AttributeFactory.loadAttributeDictionary("net.jradius.dictionary.AttributeDictionaryImpl"); + + int retries =0; + RadiusResponse response = rc.authenticate(accessRequest, auth, 0); + assertTrue(response instanceof AccessAccept); + } + + @Test + @Ignore("This test require a radius server rinning on localhost") + public void testMsChap() throws IOException, UnknownAttributeException, NoSuchAlgorithmException, RadiusException{ + InetAddress localhost = Inet4Address.getLocalHost(); + String secret = "testing123"; + RadiusClient rc = new RadiusClient(localhost,secret,1812,1813,2000); + AccessRequest accessRequest = new AccessRequest(); + RadiusAuthenticator auth = RadiusClient.getAuthProtocol("eap-md5"); + accessRequest.addAttribute(new Attr_UserName("bob")); + auth.setPassword(new Attr_CleartextPassword("hello")); + AttributeFactory.loadAttributeDictionary("net.jradius.dictionary.AttributeDictionaryImpl"); + + int retries =0; + RadiusResponse response = rc.authenticate(accessRequest, auth, 0); + assertTrue(response instanceof AccessAccept); + } + + @Test + @Ignore("This test require a radius server rinning on localhost") + public void testEapTTLS() throws IOException, UnknownAttributeException, NoSuchAlgorithmException, RadiusException{ + InetAddress localhost = Inet4Address.getLocalHost(); + String secret = "testing123"; + RadiusClient rc = new RadiusClient(localhost,secret,1812,1813,2000); + AccessRequest accessRequest = new AccessRequest(); + RadiusAuthenticator auth = RadiusClient.getAuthProtocol("eap-ttls"); + assertNotNull(auth); + accessRequest.addAttribute(new Attr_UserName("bob")); + accessRequest.addAttribute(new Attr_UserPassword("hello")); + AttributeFactory.loadAttributeDictionary("net.jradius.dictionary.AttributeDictionaryImpl"); + int retries =0; + RadiusResponse response = rc.authenticate(accessRequest, auth, 0); + assertTrue(response instanceof AccessAccept); + } + + @Test + @Ignore("This test require a radius server rinning on localhost") + public void testPeap() throws IOException, UnknownAttributeException, NoSuchAlgorithmException, RadiusException{ + InetAddress localhost = Inet4Address.getLocalHost(); + String secret = "testing123"; + RadiusClient rc = new RadiusClient(localhost,secret,1812,1813,2000); + AccessRequest accessRequest = new AccessRequest(); + accessRequest.addAttribute(new Attr_UserName("bob2")); + //accessRequest.addAttribute(new Attr_UserPassword("test")); + RadiusAuthenticator auth = RadiusClient.getAuthProtocol("peap"); + assertNotNull(auth); + ((PEAPAuthenticator)auth).setPassword(new Attr_Password("test")); + ((PEAPAuthenticator)auth).setTrustAll(true); + AttributeFactory.loadAttributeDictionary("net.jradius.dictionary.AttributeDictionaryImpl"); + int retries =0; + RadiusResponse response = rc.authenticate(accessRequest, auth, 0); + assertTrue(response.getClass().getName(),response instanceof AccessAccept); + } +} From 9d19fcdb732b6a608ecbebc06415d52f0a400f3e Mon Sep 17 00:00:00 2001 From: "jm+jradius@kubek.fr" Date: Mon, 19 Jun 2017 02:38:53 +0200 Subject: [PATCH 2/2] Modify EAP-TLS state machine --- .../java/net/jradius/client/auth/EAPTLSAuthenticator.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/extended/src/main/java/net/jradius/client/auth/EAPTLSAuthenticator.java b/extended/src/main/java/net/jradius/client/auth/EAPTLSAuthenticator.java index 8989465..4e38da3 100644 --- a/extended/src/main/java/net/jradius/client/auth/EAPTLSAuthenticator.java +++ b/extended/src/main/java/net/jradius/client/auth/EAPTLSAuthenticator.java @@ -360,12 +360,8 @@ public byte[] doEAPType(byte id, byte[] data) throws RadiusException { state = 2; } - else - { - break; - } + break; } - // drop through.... case 2: {