diff --git a/framework/src/main/java/org/apache/felix/moduleloader/IModule.java b/framework/src/main/java/org/apache/felix/moduleloader/IModule.java
index bb14f76..3718324 100644
--- a/framework/src/main/java/org/apache/felix/moduleloader/IModule.java
+++ b/framework/src/main/java/org/apache/felix/moduleloader/IModule.java
@@ -29,4 +29,6 @@
 
     public Class getClass(String name);
     public URL getResource(String name);
+
+    public Object getSecurityContext();
 }
\ No newline at end of file
diff --git a/framework/src/main/java/org/apache/felix/moduleloader/IModuleFactory.java b/framework/src/main/java/org/apache/felix/moduleloader/IModuleFactory.java
index d59cd1b..10029f4 100644
--- a/framework/src/main/java/org/apache/felix/moduleloader/IModuleFactory.java
+++ b/framework/src/main/java/org/apache/felix/moduleloader/IModuleFactory.java
@@ -21,11 +21,13 @@
     public IModule[] getModules();
     public IModule getModule(String id);
 
-    public IModule createModule(String id, IModuleDefinition md);    
+    public IModule createModule(String id, IModuleDefinition md);
     public void removeModule(IModule module);
 
     public void setContentLoader(IModule module, IContentLoader contentLoader);
 
     public void addModuleListener(ModuleListener l);
     public void removeModuleListener(ModuleListener l);
+
+    public void setSecurityContext(IModule module, Object securityContext);
 }
\ No newline at end of file
diff --git a/framework/src/main/java/org/apache/felix/moduleloader/ModuleFactoryImpl.java b/framework/src/main/java/org/apache/felix/moduleloader/ModuleFactoryImpl.java
index fbf8e9e..d6a2b38 100644
--- a/framework/src/main/java/org/apache/felix/moduleloader/ModuleFactoryImpl.java
+++ b/framework/src/main/java/org/apache/felix/moduleloader/ModuleFactoryImpl.java
@@ -110,6 +110,14 @@
         }
     }
 
+    public void setSecurityContext(IModule module, Object securityContext)
+    {
+        synchronized (this)
+        {
+            ((ModuleImpl) module).setSecurityContext(securityContext);
+        }
+    }
+
     /**
      * <p>
      * Adds a listener to the <tt>IModuleFactory</tt> to listen for
diff --git a/framework/src/main/java/org/apache/felix/moduleloader/ModuleImpl.java b/framework/src/main/java/org/apache/felix/moduleloader/ModuleImpl.java
index 4786c52..4b47de3 100644
--- a/framework/src/main/java/org/apache/felix/moduleloader/ModuleImpl.java
+++ b/framework/src/main/java/org/apache/felix/moduleloader/ModuleImpl.java
@@ -28,6 +28,7 @@
     private IModuleDefinition m_md = null;
     private IContentLoader m_contentLoader = null;
     private IWire[] m_wires = null;
+    private Object m_securityContext = null;
 
     ModuleImpl(Logger logger, String id, IModuleDefinition md)
     {
@@ -56,6 +57,11 @@
         m_contentLoader = contentLoader;
     }
 
+    protected void setSecurityContext(Object securityContext)
+    {
+        m_securityContext = securityContext;
+    }
+
     public IWire[] getWires()
     {
         return m_wires;
@@ -112,4 +118,9 @@
     {
         return m_id;
     }
+
+    public Object getSecurityContext()
+    {
+        return m_securityContext;
+    }
 }
\ No newline at end of file
