summaryrefslogtreecommitdiff
path: root/cpp/test/IceGrid/session/Server.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-06-07 14:53:02 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-06-07 14:53:02 +0000
commit03bfc7aa095d4f77f4400a47de985a851ec3e701 (patch)
tree73b7e60bb72d56d604f7873215b86e8b894dccdc /cpp/test/IceGrid/session/Server.cpp
parentFixed bug where timeout, compress flag and connection id attribute were not (diff)
downloadice-03bfc7aa095d4f77f4400a47de985a851ec3e701.tar.bz2
ice-03bfc7aa095d4f77f4400a47de985a851ec3e701.tar.xz
ice-03bfc7aa095d4f77f4400a47de985a851ec3e701.zip
Fixed Glacier2 filtering in IceGrid and added tests.
Diffstat (limited to 'cpp/test/IceGrid/session/Server.cpp')
-rw-r--r--cpp/test/IceGrid/session/Server.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/cpp/test/IceGrid/session/Server.cpp b/cpp/test/IceGrid/session/Server.cpp
index a16b1e02a13..fef590b1070 100644
--- a/cpp/test/IceGrid/session/Server.cpp
+++ b/cpp/test/IceGrid/session/Server.cpp
@@ -8,10 +8,53 @@
// **********************************************************************
#include <Ice/Ice.h>
+#include <Glacier2/PermissionsVerifier.h>
+#include <IceSSL/Plugin.h>
#include <TestCommon.h>
using namespace std;
+class ClientPermissionsVerifierI : public Glacier2::PermissionsVerifier
+{
+public:
+
+ virtual bool
+ checkPermissions(const string& userId, const string& passwd, string&, const Ice::Current&) const
+ {
+ return userId == "client1" && passwd == "test1" || userId == "client2" && passwd == "test2";
+ }
+};
+
+class AdminPermissionsVerifierI : public Glacier2::PermissionsVerifier
+{
+public:
+
+ virtual bool
+ checkPermissions(const string& userId, const string& passwd, string&, const Ice::Current&) const
+ {
+ return userId == "admin1" && passwd == "test1" || userId == "admin2" && passwd == "test2";
+ }
+};
+
+class SSLPermissionsVerifierI : public Glacier2::SSLPermissionsVerifier
+{
+public:
+
+ virtual bool
+ authorize(const Glacier2::SSLInfo& info, string&, const Ice::Current& current) const
+ {
+ IceSSL::CertificatePtr cert = IceSSL::Certificate::decode(info.certs[0]);
+ test(cert->getIssuerDN() == IceSSL::DistinguishedName(
+ "emailAddress=info@zeroc.com,CN=ZeroC Test CA,OU=Ice,O=ZeroC\\, Inc.,L=Palm Beach Gardens,"
+ "ST=Florida,C=US"));
+ test(cert->getSubjectDN() == IceSSL::DistinguishedName(
+ "CN=Client,emailAddress=info@zeroc.com,OU=Ice,O=ZeroC\\, Inc.,ST=Florida,C=US"));
+ test(cert->checkValidity());
+
+ return true;
+ }
+};
+
class Server : public Ice::Application
{
public:
@@ -23,6 +66,14 @@ int
Server::run(int argc, char* argv[])
{
Ice::ObjectAdapterPtr adapter = communicator()->createObjectAdapter("Server");
+ if(communicator()->getProperties()->getPropertyAsInt("AddPermissionsVerifiers") > 0)
+ {
+ adapter->add(new ClientPermissionsVerifierI(), communicator()->stringToIdentity("ClientPermissionsVerifier"));
+ adapter->add(new AdminPermissionsVerifierI(), communicator()->stringToIdentity("AdminPermissionsVerifier"));
+ adapter->add(new SSLPermissionsVerifierI(), communicator()->stringToIdentity("SSLPermissionsVerifier"));
+ }
+ adapter->activate();
+
shutdownOnInterrupt();
try
{