View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.module.jaas;
8   
9   import org.mule.api.EncryptionStrategy;
10  import org.mule.api.ExceptionPayload;
11  import org.mule.api.MuleMessage;
12  import org.mule.api.config.MuleProperties;
13  import org.mule.module.client.MuleClient;
14  import org.mule.security.MuleCredentials;
15  import org.mule.tck.junit4.FunctionalTestCase;
16  
17  import java.util.HashMap;
18  import java.util.Map;
19  
20  import org.junit.Test;
21  
22  import static org.junit.Assert.assertEquals;
23  import static org.junit.Assert.assertFalse;
24  import static org.junit.Assert.assertNotNull;
25  import static org.junit.Assert.assertTrue;
26  
27  public class JaasAuthenticationNoJaasConfigFileTestCase extends FunctionalTestCase
28  {
29  
30      @Override
31      protected String getConfigResources()
32      {
33          return "mule-conf-with-no-jaas-config-file.xml";
34      }
35  
36      @Test
37      public void testCaseGoodAuthentication() throws Exception
38      {
39          MuleClient client = new MuleClient(muleContext);
40  
41          Map props = new HashMap();
42          EncryptionStrategy strategy = muleContext
43              .getSecurityManager()
44              .getEncryptionStrategy("PBE");
45          String header = MuleCredentials.createHeader("Marie.Rizzo", "dragon", "PBE", strategy);
46          props.put(MuleProperties.MULE_USER_PROPERTY, header);
47          MuleMessage m = client.send("vm://test", "Test", props);
48  
49          assertNotNull(m);
50          assertTrue(m.getPayload() instanceof String);
51          assertEquals("Test Received", m.getPayloadAsString());
52      }
53  
54      @Test
55      public void testCaseDifferentGoodAuthentication() throws Exception
56      {
57          MuleClient client = new MuleClient(muleContext);
58  
59          Map props = new HashMap();
60          EncryptionStrategy strategy = muleContext
61              .getSecurityManager()
62              .getEncryptionStrategy("PBE");
63          String header = MuleCredentials.createHeader("anon", "anon", "PBE", strategy);
64          props.put(MuleProperties.MULE_USER_PROPERTY, header);
65          MuleMessage m = client.send("vm://test", "Test", props);
66  
67          assertNotNull(m);
68          assertTrue(m.getPayload() instanceof String);
69          assertEquals("Test Received", m.getPayloadAsString());
70      }
71  
72      @Test
73      public void testCaseWrongCombinationOfCorrectUsernameAndPassword() throws Exception
74      {
75          MuleClient client = new MuleClient(muleContext);
76  
77          Map props = new HashMap();
78          EncryptionStrategy strategy = muleContext
79              .getSecurityManager()
80              .getEncryptionStrategy("PBE");
81          String header = MuleCredentials.createHeader("Marie.Rizzo", "anon", "PBE", strategy);
82          props.put(MuleProperties.MULE_USER_PROPERTY, header);
83          MuleMessage m = client.send("vm://test", "Test", props);
84  
85          assertNotNull(m);
86          assertTrue(m.getPayload() instanceof String);
87          assertFalse(m.getPayloadAsString().equals("Test Received"));
88  
89          assertExceptionPayload(m, "Authentication failed for principal Marie.Rizzo. Message payload is of type: String");
90      }
91  
92      @Test
93      public void testCaseBadUserName() throws Exception
94      {
95          MuleClient client = new MuleClient(muleContext);
96          Map props = new HashMap();
97          EncryptionStrategy strategy = muleContext
98              .getSecurityManager()
99              .getEncryptionStrategy("PBE");
100         String header = MuleCredentials.createHeader("Evil", "dragon", "PBE", strategy);
101         props.put(MuleProperties.MULE_USER_PROPERTY, header);
102         MuleMessage m = client.send("vm://test", "Test", props);
103 
104         assertNotNull(m);
105         assertTrue(m.getPayload() instanceof String);
106         assertFalse(m.getPayloadAsString().equals("Test Received"));
107 
108         assertExceptionPayload(m, "Authentication failed for principal Evil. Message payload is of type: String");
109     }
110 
111     @Test
112     public void testCaseBadPassword() throws Exception
113     {
114         MuleClient client = new MuleClient(muleContext);
115         Map props = new HashMap();
116         EncryptionStrategy strategy = muleContext
117             .getSecurityManager()
118             .getEncryptionStrategy("PBE");
119         String header = MuleCredentials.createHeader("Marie.Rizzo", "evil", "PBE", strategy);
120         props.put(MuleProperties.MULE_USER_PROPERTY, header);
121         MuleMessage m = client.send("vm://test", "Test", props);
122 
123         assertNotNull(m);
124         assertTrue(m.getPayload() instanceof String);
125         assertFalse(m.getPayloadAsString().equals("Test Received"));
126 
127         assertExceptionPayload(m, "Authentication failed for principal Marie.Rizzo. Message payload is of type: String");
128     }
129 
130     public void assertExceptionPayload(MuleMessage message, String exceptionMessage)
131     {
132         assertNotNull(message.getExceptionPayload());
133         ExceptionPayload exceptionPayload = message.getExceptionPayload();
134         assertNotNull(exceptionPayload);
135         assertEquals(exceptionMessage, exceptionPayload.getMessage());
136     }
137 }