diff --git a/jaas/src/main/java/org/apache/felix/jaas/internal/OsgiLoginModuleProvider.java b/jaas/src/main/java/org/apache/felix/jaas/internal/OsgiLoginModuleProvider.java
index 8d49efa..2a99908 100644
--- a/jaas/src/main/java/org/apache/felix/jaas/internal/OsgiLoginModuleProvider.java
+++ b/jaas/src/main/java/org/apache/felix/jaas/internal/OsgiLoginModuleProvider.java
@@ -19,8 +19,6 @@
 
 package org.apache.felix.jaas.internal;
 
-import static javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag;
-
 import java.util.Collections;
 import java.util.Map;
 
@@ -31,6 +29,8 @@
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 
+import static javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag;
+
 final class OsgiLoginModuleProvider implements LoginModuleProvider
 {
     private final LoginModuleFactory delegate;
@@ -56,7 +56,7 @@
         }
         this.ranking = PropertiesUtil.toInteger(rankingProperty, 0);
         this.flag = ControlFlag.from((String) serviceReference.getProperty(LoginModuleFactory.JAAS_CONTROL_FLAG)).flag();
-        this.realmName = (String) serviceReference.getProperty(LoginModuleFactory.JAAS_REALM_NAME);
+        this.realmName = Util.trimToNull((String) serviceReference.getProperty(LoginModuleFactory.JAAS_REALM_NAME));
     }
 
     public Map<String, ?> options()
diff --git a/jaas/src/test/java/org/apache/felix/jaas/internal/UtilTest.java b/jaas/src/test/java/org/apache/felix/jaas/internal/UtilTest.java
new file mode 100644
index 0000000..dfc6a8e
--- /dev/null
+++ b/jaas/src/test/java/org/apache/felix/jaas/internal/UtilTest.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.felix.jaas.internal;
+
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+public class UtilTest
+{
+
+    @Test
+    public void testTrimToNull() throws Exception
+    {
+        assertNull(Util.trimToNull(""));
+        assertNull(Util.trimToNull(null));
+        assertNull(Util.trimToNull("   "));
+        assertEquals("foo", Util.trimToNull("foo   "));
+        assertEquals("foo", Util.trimToNull("foo"));
+        assertEquals("foo",Util.trimToNull("  foo  "));
+    }
+
+    @Test
+    public void testIsEmpty() throws Exception
+    {
+        assertTrue(Util.isEmpty(null));
+        assertTrue(Util.isEmpty(""));
+        assertFalse(Util.isEmpty("foo"));
+    }
+}
