diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-06-07 14:53:02 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-06-07 14:53:02 +0000 |
commit | 03bfc7aa095d4f77f4400a47de985a851ec3e701 (patch) | |
tree | 73b7e60bb72d56d604f7873215b86e8b894dccdc /cpp/test/IceGrid/session/Server.cpp | |
parent | Fixed bug where timeout, compress flag and connection id attribute were not (diff) | |
download | ice-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.cpp | 51 |
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 { |