00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00036 #ifndef OW_AUTHENTICATORIFC_HPP_INCLUDE_GUARD_
00037 #define OW_AUTHENTICATORIFC_HPP_INCLUDE_GUARD_
00038 #include "OW_config.h"
00039 #include "OW_String.hpp"
00040 #include "OW_Exception.hpp"
00041 #include "OW_MutexLock.hpp"
00042 #include "OW_ServiceEnvironmentIFC.hpp"
00043 #include "OW_SharedLibraryReference.hpp"
00044 #include "OW_OperationContext.hpp"
00045 #include "OW_IntrusiveReference.hpp"
00046 #include "OW_IntrusiveCountableBase.hpp"
00047 #include "OW_IfcsFwd.hpp"
00048
00049 namespace OW_NAMESPACE
00050 {
00051
00052 class OW_COMMON_API AuthenticatorIFC : public IntrusiveCountableBase
00053 {
00054 public:
00055 AuthenticatorIFC()
00056 : signature(0xCA1DE8A1)
00057 , m_mutex() {}
00058 virtual ~AuthenticatorIFC();
00066 void init(const ServiceEnvironmentIFCRef& env) { doInit(env); }
00084 bool authenticate(String& userName, const String& info,
00085 String& details, OperationContext& context)
00086 {
00087 MutexLock lock(m_mutex);
00088 return doAuthenticate(userName, info, details, context);
00089 }
00090 private:
00091 UInt32 signature;
00092 protected:
00108 virtual bool doAuthenticate(String& userName,
00109 const String& info, String& details, OperationContext& context) = 0;
00115 virtual void doInit(ServiceEnvironmentIFCRef);
00116 Mutex m_mutex;
00117 };
00118
00119 #if !defined(OW_STATIC_SERVICES)
00120 #define OW_AUTHENTICATOR_FACTORY(derived, authenticatorName) \
00121 extern "C" OW_EXPORT OW_NAMESPACE::AuthenticatorIFC* \
00122 createAuthenticator() \
00123 { \
00124 return new derived; \
00125 } \
00126 extern "C" OW_EXPORT const char* \
00127 getOWVersion() \
00128 { \
00129 return OW_VERSION; \
00130 }
00131 #else
00132 #define OW_AUTHENTICATOR_FACTORY(derived, authenticatorName) \
00133 extern "C" OW_NAMESPACE::AuthenticatorIFC* \
00134 createAuthenticator_##authenticatorName() \
00135 { \
00136 return new derived; \
00137 }
00138 #endif
00139
00140 }
00141
00142 #endif