--- /dev/null
+package org.argeo.osgi.auth;
+
+import java.io.IOException;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import org.osgi.framework.BundleContext;
+
+public class BuncleContextCallbackHander implements CallbackHandler {
+ private final BundleContext bundleContext;
+
+ public BuncleContextCallbackHander(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
+ @Override
+ public void handle(Callback[] callbacks) throws IOException,
+ UnsupportedCallbackException {
+ for (Callback callback : callbacks) {
+ if (!(callback instanceof BundleContextCallback))
+ throw new UnsupportedCallbackException(callback);
+ ((BundleContextCallback) callback).setBundleContext(bundleContext);
+ }
+
+ }
+
+}
--- /dev/null
+package org.argeo.osgi.auth;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.spi.LoginModule;
+
+import org.osgi.framework.BundleContext;
+
+/** Allows a {@link LoginModule} to as for a {@link BundleContext} */
+public class BundleContextCallback implements Callback {
+ private BundleContext bundleContext;
+
+ public BundleContext getBundleContext() {
+ return bundleContext;
+ }
+
+ public void setBundleContext(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
+ }
+
+}