| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| using System; |
| using System.Collections.Generic; |
| using System.Threading; |
| |
| namespace Apache.Geode.Client.UnitTests |
| { |
| using NUnit.Framework; |
| using Apache.Geode.Client.Tests; |
| using Apache.Geode.DUnitFramework; |
| using Apache.Geode.Client; |
| |
| [Ignore("broken")] |
| [TestFixture] |
| [Category("group4")] |
| [Category("unicast_only")] |
| [Category("generics")] |
| public class ThinClientSecurityAuthTestsMU : ThinClientRegionSteps |
| { |
| #region Private members |
| |
| private UnitProcess m_client1; |
| private UnitProcess m_client2; |
| private const string CacheXml1 = "cacheserver_notify_subscription.xml"; |
| private const string CacheXml2 = "cacheserver_notify_subscription2.xml"; |
| |
| #endregion |
| |
| protected override ClientBase[] GetClients() |
| { |
| m_client1 = new UnitProcess(); |
| m_client2 = new UnitProcess(); |
| return new ClientBase[] { m_client1, m_client2 }; |
| } |
| |
| [TearDown] |
| public override void EndTest() |
| { |
| try |
| { |
| m_client1.Call(CacheHelper.Close); |
| m_client2.Call(CacheHelper.Close); |
| CacheHelper.ClearEndpoints(); |
| CacheHelper.ClearLocators(); |
| } |
| finally |
| { |
| CacheHelper.StopJavaServers(); |
| } |
| base.EndTest(); |
| } |
| |
| void runValidCredentials() |
| { |
| foreach (CredentialGenerator gen in SecurityTestUtil.getAllGenerators(true)) |
| { |
| Properties<string, string> extraProps = gen.SystemProperties; |
| Properties<string, string> javaProps = gen.JavaProperties; |
| string authenticator = gen.Authenticator; |
| string authInit = gen.AuthInit; |
| |
| Util.Log("ValidCredentials: Using scheme: " + gen.GetClassCode()); |
| Util.Log("ValidCredentials: Using authenticator: " + authenticator); |
| Util.Log("ValidCredentials: Using authinit: " + authInit); |
| |
| // Start the server |
| CacheHelper.SetupJavaServers(true, CacheXml1); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1, SecurityTestUtil.GetServerArgs( |
| authenticator, extraProps, javaProps)); |
| Util.Log("Cacheserver 1 started."); |
| |
| // Start the clients with valid credentials |
| Properties<string, string> credentials1 = gen.GetValidCredentials(1); |
| Properties<string, string> javaProps1 = gen.JavaProperties; |
| Util.Log("ValidCredentials: For first client credentials: " + |
| credentials1 + " : " + javaProps1); |
| Properties<string, string> credentials2 = gen.GetValidCredentials(2); |
| Properties<string, string> javaProps2 = gen.JavaProperties; |
| Util.Log("ValidCredentials: For second client credentials: " + |
| credentials2 + " : " + javaProps2); |
| |
| m_client1.Call(SecurityTestUtil.CreateClientMU, RegionName, |
| CacheHelper.Locators, authInit, new Properties<string, string>(), true); |
| m_client2.Call(SecurityTestUtil.CreateClientMU, RegionName, |
| CacheHelper.Locators, authInit, new Properties<string, string>(), true); |
| |
| // Perform some put operations from client1 |
| m_client1.Call(DoPutsMU, 10, credentials1, true); |
| |
| // Verify that the puts succeeded |
| m_client2.Call(DoGetsMU, 10, credentials2, true); |
| |
| m_client1.Call(Close); |
| m_client2.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| |
| CacheHelper.StopJavaLocator(1); |
| |
| CacheHelper.ClearEndpoints(); |
| CacheHelper.ClearLocators(); |
| } |
| } |
| |
| void runNoCredentials() |
| { |
| foreach (CredentialGenerator gen in SecurityTestUtil.getAllGenerators(true)) |
| { |
| Properties<string, string> extraProps = gen.SystemProperties; |
| Properties<string, string> javaProps = gen.JavaProperties; |
| string authenticator = gen.Authenticator; |
| string authInit = gen.AuthInit; |
| |
| Util.Log("NoCredentials: Using scheme: " + gen.GetClassCode()); |
| Util.Log("NoCredentials: Using authenticator: " + authenticator); |
| Util.Log("NoCredentials: Using authinit: " + authInit); |
| |
| // Start the server |
| CacheHelper.SetupJavaServers(true, CacheXml1); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1, SecurityTestUtil.GetServerArgs( |
| authenticator, extraProps, javaProps)); |
| Util.Log("Cacheserver 1 started."); |
| |
| // Start the clients with valid credentials |
| Properties<string, string> credentials1 = gen.GetValidCredentials(3); |
| Properties<string, string> javaProps1 = gen.JavaProperties; |
| Util.Log("NoCredentials: For first client credentials: " + |
| credentials1 + " : " + javaProps1); |
| |
| m_client1.Call(SecurityTestUtil.CreateClientMU, RegionName, |
| CacheHelper.Locators, authInit, (Properties<string, string>)null, true); |
| |
| // Perform some put operations from client1 |
| m_client1.Call(DoPutsMU, 4, (Properties<string, string>)null, true, ExpectedResult.AuthFailedException); |
| m_client1.Call(DoPutsMU, 4, new Properties<string, string>(), true, ExpectedResult.AuthFailedException); |
| |
| // Creating region on client2 should throw authentication |
| // required exception |
| /* m_client2.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, (string)null, (Properties<string, string>)null, |
| ExpectedResult.AuthRequiredException, true); |
| */ |
| m_client1.Call(Close); |
| //m_client2.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| |
| CacheHelper.StopJavaLocator(1); |
| |
| CacheHelper.ClearEndpoints(); |
| CacheHelper.ClearLocators(); |
| } |
| } |
| |
| void runInvalidCredentials() |
| { |
| foreach (CredentialGenerator gen in SecurityTestUtil.getAllGenerators(true)) |
| { |
| Properties<string, string> extraProps = gen.SystemProperties; |
| Properties<string, string> javaProps = gen.JavaProperties; |
| string authenticator = gen.Authenticator; |
| string authInit = gen.AuthInit; |
| |
| Util.Log("InvalidCredentials: Using scheme: " + gen.GetClassCode()); |
| Util.Log("InvalidCredentials: Using authenticator: " + authenticator); |
| Util.Log("InvalidCredentials: Using authinit: " + authInit); |
| |
| // Start the server |
| CacheHelper.SetupJavaServers(true, CacheXml1); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1, SecurityTestUtil.GetServerArgs( |
| authenticator, extraProps, javaProps)); |
| Util.Log("Cacheserver 1 started."); |
| |
| // Start the clients with valid credentials |
| Properties<string, string> credentials1 = gen.GetValidCredentials(8); |
| Properties<string, string> javaProps1 = gen.JavaProperties; |
| Util.Log("InvalidCredentials: For first client credentials: " + |
| credentials1 + " : " + javaProps1); |
| Properties<string, string> credentials2 = gen.GetInvalidCredentials(7); |
| Properties<string, string> javaProps2 = gen.JavaProperties; |
| Util.Log("InvalidCredentials: For second client credentials: " + |
| credentials2 + " : " + javaProps2); |
| |
| m_client1.Call(SecurityTestUtil.CreateClientMU, RegionName, |
| CacheHelper.Locators, authInit, (Properties<string, string>)null, true); |
| |
| // Perform some put operations from client1 |
| m_client1.Call(DoPutsMU, 4, credentials1, true); |
| |
| // Creating region on client2 should throw authentication |
| // failure exception |
| m_client2.Call(SecurityTestUtil.CreateClientMU, RegionName, |
| CacheHelper.Locators, authInit, (Properties<string, string>)null, true); |
| |
| // Perform some put operations from client1 |
| m_client2.Call(DoPutsMU, 4, credentials2, true, ExpectedResult.AuthFailedException); |
| |
| m_client1.Call(Close); |
| m_client2.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| |
| CacheHelper.StopJavaLocator(1); |
| |
| CacheHelper.ClearEndpoints(); |
| CacheHelper.ClearLocators(); |
| } |
| } |
| |
| void runInvalidAuthInit() |
| { |
| foreach (CredentialGenerator gen in SecurityTestUtil.getAllGenerators(true)) |
| { |
| Properties<string, string> extraProps = gen.SystemProperties; |
| Properties<string, string> javaProps = gen.JavaProperties; |
| string authenticator = gen.Authenticator; |
| |
| Util.Log("InvalidAuthInit: Using scheme: " + gen.GetClassCode()); |
| Util.Log("InvalidAuthInit: Using authenticator: " + authenticator); |
| |
| // Start the server |
| CacheHelper.SetupJavaServers(true, CacheXml1); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1, SecurityTestUtil.GetServerArgs( |
| authenticator, extraProps, javaProps)); |
| Util.Log("Cacheserver 1 started."); |
| |
| // Creating region on client1 with invalid authInit callback should |
| // throw authentication required exception |
| Properties<string, string> credentials = gen.GetValidCredentials(5); |
| javaProps = gen.JavaProperties; |
| Util.Log("InvalidAuthInit: For first client credentials: " + |
| credentials + " : " + javaProps); |
| m_client1.Call(SecurityTestUtil.CreateClientMU, RegionName, |
| CacheHelper.Locators, "Apache.Geode.Templates.Cache.Security.none", |
| (Properties<string, string>)null, true); |
| |
| // Perform some put operations from client1 |
| m_client1.Call(DoPutsMU, 20, credentials, true); |
| |
| m_client1.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| |
| CacheHelper.StopJavaLocator(1); |
| |
| CacheHelper.ClearEndpoints(); |
| CacheHelper.ClearLocators(); |
| } |
| } |
| |
| void runInvalidAuthenticator() |
| { |
| foreach (CredentialGenerator gen in SecurityTestUtil.getAllGenerators(true)) |
| { |
| Properties<string, string> extraProps = gen.SystemProperties; |
| Properties<string, string> javaProps = gen.JavaProperties; |
| string authInit = gen.AuthInit; |
| |
| if (authInit == null || authInit.Length == 0) |
| { |
| // Skip a scheme which does not have an authInit in the first place |
| // (e.g. SSL) since that will fail with AuthReqEx before |
| // authenticator is even invoked |
| Util.Log("InvalidAuthenticator: Skipping scheme [" + |
| gen.GetClassCode() + "] which has no authInit"); |
| continue; |
| } |
| |
| Util.Log("InvalidAuthenticator: Using scheme: " + gen.GetClassCode()); |
| Util.Log("InvalidAuthenticator: Using authinit: " + authInit); |
| |
| // Start the server with invalid authenticator |
| CacheHelper.SetupJavaServers(true, CacheXml1); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1, SecurityTestUtil.GetServerArgs( |
| "org.apache.geode.none", extraProps, javaProps)); |
| Util.Log("Cacheserver 1 started."); |
| |
| // Starting the client with valid credentials should throw |
| // authentication failed exception |
| Properties<string, string> credentials1 = gen.GetValidCredentials(1); |
| Properties<string, string> javaProps1 = gen.JavaProperties; |
| Util.Log("InvalidAuthenticator: For first client valid credentials: " + |
| credentials1 + " : " + javaProps1); |
| m_client1.Call(SecurityTestUtil.CreateClientMU, RegionName, |
| CacheHelper.Locators, authInit, (Properties<string, string>)null, true); |
| |
| // Perform some put operations from client1 |
| m_client1.Call(DoPutsMU, 20, credentials1, true, ExpectedResult.AuthFailedException); |
| |
| // Also try with invalid credentials |
| /*Properties<string, string> credentials2 = gen.GetInvalidCredentials(1); |
| Properties<string, string> javaProps2 = gen.JavaProperties; |
| Util.Log("InvalidAuthenticator: For first client invalid " + |
| "credentials: " + credentials2 + " : " + javaProps2); |
| m_client1.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, authInit, credentials2, |
| ExpectedResult.AuthFailedException); |
| */ |
| m_client1.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| |
| CacheHelper.StopJavaLocator(1); |
| |
| CacheHelper.ClearEndpoints(); |
| CacheHelper.ClearLocators(); |
| } |
| } |
| |
| void runNoAuthInitWithCredentials() |
| { |
| foreach (CredentialGenerator gen in SecurityTestUtil.getAllGenerators(true)) |
| { |
| Properties<string, string> extraProps = gen.SystemProperties; |
| Properties<string, string> javaProps = gen.JavaProperties; |
| string authenticator = gen.Authenticator; |
| string authInit = gen.AuthInit; |
| |
| if (authInit == null || authInit.Length == 0) |
| { |
| // If the scheme does not have an authInit in the first place |
| // (e.g. SSL) then skip it |
| Util.Log("NoAuthInitWithCredentials: Skipping scheme [" + |
| gen.GetClassCode() + "] which has no authInit"); |
| continue; |
| } |
| |
| Util.Log("NoAuthInitWithCredentials: Using scheme: " + |
| gen.GetClassCode()); |
| Util.Log("NoAuthInitWithCredentials: Using authenticator: " + |
| authenticator); |
| |
| // Start the server |
| CacheHelper.SetupJavaServers(true, CacheXml1); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1, SecurityTestUtil.GetServerArgs( |
| authenticator, extraProps, javaProps)); |
| Util.Log("Cacheserver 1 started."); |
| |
| // Start client1 with valid credentials and client2 with invalid |
| // credentials; both should fail without an authInit |
| Properties<string, string> credentials1 = gen.GetValidCredentials(6); |
| Properties<string, string> javaProps1 = gen.JavaProperties; |
| Util.Log("NoAuthInitWithCredentials: For first client valid " + |
| "credentials: " + credentials1 + " : " + javaProps1); |
| Properties<string, string> credentials2 = gen.GetInvalidCredentials(2); |
| Properties<string, string> javaProps2 = gen.JavaProperties; |
| Util.Log("NoAuthInitWithCredentials: For second client invalid " + |
| "credentials: " + credentials2 + " : " + javaProps2); |
| |
| m_client1.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, (string)null, credentials1, |
| ExpectedResult.AuthRequiredException); |
| m_client2.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, (string)null, credentials2, |
| ExpectedResult.AuthRequiredException); |
| |
| m_client1.Call(Close); |
| m_client2.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| |
| CacheHelper.StopJavaLocator(1); |
| |
| CacheHelper.ClearEndpoints(); |
| CacheHelper.ClearLocators(); |
| } |
| } |
| |
| void runNoAuthenticatorWithCredentials() |
| { |
| foreach (CredentialGenerator gen in SecurityTestUtil.getAllGenerators(true)) |
| { |
| Properties<string, string> extraProps = gen.SystemProperties; |
| Properties<string, string> javaProps = gen.JavaProperties; |
| string authenticator = gen.Authenticator; |
| string authInit = gen.AuthInit; |
| |
| if (authenticator == null || authenticator.Length == 0) |
| { |
| // If the scheme does not have an authenticator in the first place |
| // (e.g. SSL) then skip it since this test is useless |
| Util.Log("NoAuthenticatorWithCredentials: Skipping scheme [" + |
| gen.GetClassCode() + "] which has no authenticator"); |
| continue; |
| } |
| |
| Util.Log("NoAuthenticatorWithCredentials: Using scheme: " + |
| gen.GetClassCode()); |
| Util.Log("NoAuthenticatorWithCredentials: Using authinit: " + |
| authInit); |
| |
| // Start the servers |
| CacheHelper.SetupJavaServers(true, CacheXml1); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1, SecurityTestUtil.GetServerArgs( |
| null, extraProps, javaProps)); |
| Util.Log("Cacheserver 1 started."); |
| |
| // Start client1 with valid credentials and client2 with invalid |
| // credentials; both should succeed with no authenticator on server |
| Properties<string, string> credentials1 = gen.GetValidCredentials(3); |
| Properties<string, string> javaProps1 = gen.JavaProperties; |
| Util.Log("NoAuthenticatorWithCredentials: For first client valid " + |
| "credentials: " + credentials1 + " : " + javaProps1); |
| Properties<string, string> credentials2 = gen.GetInvalidCredentials(12); |
| Properties<string, string> javaProps2 = gen.JavaProperties; |
| Util.Log("NoAuthenticatorWithCredentials: For second client invalid " + |
| "credentials: " + credentials2 + " : " + javaProps2); |
| |
| m_client1.Call(SecurityTestUtil.CreateClientMU, RegionName, |
| CacheHelper.Locators, authInit, (Properties<string, string>)null, true); |
| m_client2.Call(SecurityTestUtil.CreateClientMU, RegionName, |
| CacheHelper.Locators, authInit, (Properties<string, string>)null, true); |
| |
| // Perform some put operations from client1 |
| m_client1.Call(DoPutsMU, 4, credentials1, true); |
| |
| // Verify that the puts succeeded |
| m_client2.Call(DoGetsMU, 4, credentials2, true); |
| |
| m_client1.Call(Close); |
| m_client2.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| |
| CacheHelper.StopJavaLocator(1); |
| |
| CacheHelper.ClearEndpoints(); |
| CacheHelper.ClearLocators(); |
| } |
| } |
| |
| void runCredentialsWithFailover() |
| { |
| foreach (CredentialGenerator gen in SecurityTestUtil.getAllGenerators(true)) |
| { |
| Properties<string, string> extraProps = gen.SystemProperties; |
| Properties<string, string> javaProps = gen.JavaProperties; |
| string authenticator = gen.Authenticator; |
| string authInit = gen.AuthInit; |
| |
| Util.Log("CredentialsWithFailover: Using scheme: " + |
| gen.GetClassCode()); |
| Util.Log("CredentialsWithFailover: Using authenticator: " + |
| authenticator); |
| Util.Log("CredentialsWithFailover: Using authinit: " + authInit); |
| |
| // Start the first server; do not start second server yet to force |
| // the clients to connect to the first server. |
| CacheHelper.SetupJavaServers(true, CacheXml1, CacheXml2); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1, SecurityTestUtil.GetServerArgs( |
| authenticator, extraProps, javaProps)); |
| Util.Log("Cacheserver 1 started."); |
| |
| // Start the clients with valid credentials |
| Properties<string, string> credentials1 = gen.GetValidCredentials(5); |
| Properties<string, string> javaProps1 = gen.JavaProperties; |
| Util.Log("CredentialsWithFailover: For first client valid " + |
| "credentials: " + credentials1 + " : " + javaProps1); |
| Properties<string, string> credentials2 = gen.GetValidCredentials(6); |
| Properties<string, string> javaProps2 = gen.JavaProperties; |
| Util.Log("CredentialsWithFailover: For second client valid " + |
| "credentials: " + credentials2 + " : " + javaProps2); |
| m_client1.Call(SecurityTestUtil.CreateClientMU, RegionName, |
| CacheHelper.Locators, authInit, (Properties<string, string>)null, true); |
| m_client2.Call(SecurityTestUtil.CreateClientMU, RegionName, |
| CacheHelper.Locators, authInit, (Properties<string, string>)null, true); |
| |
| // Perform some put operations from client1 |
| m_client1.Call(DoPutsMU, 2, credentials1, true); |
| // Verify that the puts succeeded |
| m_client2.Call(DoGetsMU, 2, credentials2, true); |
| |
| // Start the second server and stop the first one to force a failover |
| CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1, SecurityTestUtil.GetServerArgs( |
| authenticator, extraProps, javaProps)); |
| Util.Log("Cacheserver 2 started."); |
| CacheHelper.StopJavaServer(1); |
| |
| // Perform some create/update operations from client1 |
| // and verify from client2 |
| m_client1.Call(DoPutsMU, 4, credentials1, true); |
| m_client2.Call(DoGetsMU, 4, credentials2, true); |
| |
| // Try to connect client2 with no credentials |
| // Verify that the creation of region throws security exception |
| /*m_client2.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, (string)null, (Properties<string, string>)null, |
| ExpectedResult.AuthRequiredException); |
| |
| // Now try to connect client1 with invalid credentials |
| // Verify that the creation of region throws security exception |
| credentials1 = gen.GetInvalidCredentials(7); |
| javaProps1 = gen.JavaProperties; |
| Util.Log("CredentialsWithFailover: For first client invalid " + |
| "credentials: " + credentials1 + " : " + javaProps1); |
| m_client1.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, authInit, credentials1, |
| ExpectedResult.AuthFailedException); |
| */ |
| m_client1.Call(Close); |
| m_client2.Call(Close); |
| |
| CacheHelper.StopJavaServer(2); |
| |
| CacheHelper.StopJavaLocator(1); |
| |
| CacheHelper.ClearLocators(); |
| CacheHelper.ClearEndpoints(); |
| } |
| } |
| |
| public void registerPdxTypes() |
| { |
| CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxTests.PdxTypes8.CreateDeserializable); |
| CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxTests.PdxTypes1.CreateDeserializable); |
| } |
| |
| void runCredentialsForNotifications() |
| { |
| foreach (CredentialGenerator gen in SecurityTestUtil.getAllGenerators(true)) |
| { |
| Properties<string, string> extraProps = gen.SystemProperties; |
| Properties<string, string> javaProps = gen.JavaProperties; |
| string authenticator = gen.Authenticator; |
| string authInit = gen.AuthInit; |
| |
| Util.Log("CredentialsForNotifications: Using scheme: " + |
| gen.GetClassCode()); |
| Util.Log("CredentialsForNotifications: Using authenticator: " + |
| authenticator); |
| Util.Log("CredentialsForNotifications: Using authinit: " + authInit); |
| |
| // Start the two servers. |
| CacheHelper.SetupJavaServers(true, CacheXml1, CacheXml2); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1, SecurityTestUtil.GetServerArgs( |
| authenticator, extraProps, javaProps)); |
| Util.Log("Cacheserver 1 started."); |
| CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1, SecurityTestUtil.GetServerArgs( |
| authenticator, extraProps, javaProps)); |
| Util.Log("Cacheserver 2 started."); |
| |
| // Start the clients with valid credentials |
| Properties<string, string> credentials1 = gen.GetValidCredentials(5); |
| Properties<string, string> javaProps1 = gen.JavaProperties; |
| Util.Log("CredentialsForNotifications: For first client valid " + |
| "credentials: " + credentials1 + " : " + javaProps1); |
| Properties<string, string> credentials2 = gen.GetValidCredentials(6); |
| Properties<string, string> javaProps2 = gen.JavaProperties; |
| Util.Log("CredentialsForNotifications: For second client valid " + |
| "credentials: " + credentials2 + " : " + javaProps2); |
| m_client1.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, authInit, credentials1); |
| // Set up zero forward connections to check notification handshake only |
| m_client2.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, authInit, credentials2, |
| 0, ExpectedResult.Success); |
| |
| m_client1.Call(registerPdxTypes); |
| m_client2.Call(registerPdxTypes); |
| |
| // Register interest for all keys on second client |
| m_client2.Call(RegisterAllKeys, new string[] { RegionName }); |
| |
| // Wait for secondary server to see second client |
| Thread.Sleep(1000); |
| |
| // Perform some put operations from client1 |
| m_client1.Call(DoPuts, 2); |
| // Verify that the puts succeeded |
| m_client2.Call(DoLocalGets, 2); |
| |
| // Stop the first server |
| CacheHelper.StopJavaServer(1); |
| |
| // Perform some create/update operations from client1 |
| m_client1.Call(DoPuts, 4, true, ExpectedResult.Success); |
| // Verify that the creates/updates succeeded |
| m_client2.Call(DoLocalGets, 4, true); |
| |
| // Start server1 again and try to connect client1 using zero forward |
| // connections with no credentials. |
| // Verify that the creation of region throws authentication |
| // required exception |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1, SecurityTestUtil.GetServerArgs( |
| authenticator, extraProps, javaProps)); |
| Util.Log("Cacheserver 1 started."); |
| m_client1.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, (string)null, (Properties<string, string>)null, |
| 0, ExpectedResult.AuthRequiredException); |
| |
| // Now try to connect client2 using zero forward connections |
| // with invalid credentials. |
| // Verify that the creation of region throws security exception |
| credentials2 = gen.GetInvalidCredentials(3); |
| javaProps2 = gen.JavaProperties; |
| Util.Log("CredentialsForNotifications: For second client invalid " + |
| "credentials: " + credentials2 + " : " + javaProps2); |
| m_client2.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, authInit, credentials2, |
| 0, ExpectedResult.AuthFailedException); |
| |
| // Now try to connect client2 with invalid auth-init method |
| // Trying to create the region on client with valid credentials should |
| // throw an authentication failed exception |
| m_client2.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, "Apache.Geode.Templates.Cache.Security.none", |
| credentials1, 0, ExpectedResult.AuthRequiredException); |
| |
| // Try connection with null auth-init on clients. |
| m_client1.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, (string)null, credentials1, |
| 0, ExpectedResult.AuthRequiredException); |
| m_client2.Call(SecurityTestUtil.CreateClient, RegionName, |
| CacheHelper.Locators, (string)null, credentials2, |
| 0, ExpectedResult.AuthRequiredException); |
| |
| m_client1.Call(Close); |
| m_client2.Call(Close); |
| |
| CacheHelper.StopJavaServer(1); |
| CacheHelper.StopJavaServer(2); |
| |
| CacheHelper.StopJavaLocator(1); |
| |
| CacheHelper.ClearLocators(); |
| CacheHelper.ClearEndpoints(); |
| } |
| } |
| |
| [Test] |
| public void ValidCredentials() |
| { |
| runValidCredentials(); |
| } |
| |
| [Test] |
| public void NoCredentials() |
| { |
| runNoCredentials(); |
| } |
| |
| [Test] |
| public void InvalidCredentials() |
| { |
| runInvalidCredentials(); |
| } |
| |
| [Test] |
| public void InvalidAuthInit() |
| { |
| runInvalidAuthInit(); |
| } |
| |
| [Test] |
| public void InvalidAuthenticator() |
| { |
| runInvalidAuthenticator(); |
| } |
| |
| [Test] |
| public void NoAuthInitWithCredentials() |
| { |
| runNoAuthInitWithCredentials(); |
| } |
| |
| [Test] |
| public void NoAuthenticatorWithCredentials() |
| { |
| runNoAuthenticatorWithCredentials(); |
| } |
| |
| [Test] |
| public void CredentialsWithFailover() |
| { |
| runCredentialsWithFailover(); |
| } |
| |
| [Test] |
| public void CredentialsForNotifications() |
| { |
| runCredentialsForNotifications(); |
| } |
| } |
| } |