diff --git a/composer.json b/composer.json
index 0e153b21a1ef4ff547afcecd3461b175a6313ec1..c60f3b3bffa7fee2534847bc1f96a9b8554e65ab 100644
--- a/composer.json
+++ b/composer.json
@@ -4,7 +4,7 @@
   "type": "library",
   "homepage": "https://git.doit.wisc.edu/adi-ia/uw-php-security",
   "license": "Apache-2.0",
-  "version": "1.0.2",
+  "version": "1.0.3",
   "authors": [{
     "name": "UW-Madison DoIT ADI Integrated Applications",
     "email": "adi-ia@lists.wisc.edu",
diff --git a/src/main/edu/wisc/doit/FederatedPreauthUserDetailsProvider.php b/src/main/edu/wisc/doit/FederatedPreauthUserDetailsProvider.php
index 94ea4103c21605fe9d289b10e01d41e699e405b9..a0c17d476ca71eccaf07585f4889fcc337a0eb46 100644
--- a/src/main/edu/wisc/doit/FederatedPreauthUserDetailsProvider.php
+++ b/src/main/edu/wisc/doit/FederatedPreauthUserDetailsProvider.php
@@ -28,8 +28,8 @@ class FederatedPreauthUserDetailsProvider implements UserDetailsProvider
     public function loadUser()
     {
         // Return null if no Shib session is found
-        if (empty(getenv(FederatedPreauthUserDetailsProvider::SHIB_SESSION_ID)) &&
-            empty(getenv(FederatedPreauthUserDetailsProvider::SHIB_SESSION_ID_HTTP))) {
+        if ($this->httpHeaders && !getenv(FederatedPreauthUserDetailsProvider::SHIB_SESSION_ID_HTTP) ||
+            !$this->httpHeaders && !getenv(FederatedPreauthUserDetailsProvider::SHIB_SESSION_ID)) {
             return null;
         }
 
diff --git a/src/test/edu/wisc/doit/FederatedPreauthUserDetailsProviderTest.php b/src/test/edu/wisc/doit/FederatedPreauthUserDetailsProviderTest.php
deleted file mode 100644
index 4accd8e943d0370605f6e361a292f4c614d0b517..0000000000000000000000000000000000000000
--- a/src/test/edu/wisc/doit/FederatedPreauthUserDetailsProviderTest.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-use edu\wisc\doit\UserDetailsProvider;
-use edu\wisc\doit\FederatedPreauthUserDetailsProvider;
-
-/**
- * Tests for {@link FederatedPreauthUserDetailsProvider}.
- */
-class FederatedPreauthUserDetailsProviderTest extends \PHPUnit_Framework_TestCase
-{
-
-    /** @var array */
-    private $attributes;
-
-    /** @var UserDetailsProvider */
-    private $userProvider;
-
-    /**
-     * Populate putenv with Shib attributes to simulate a logged in user
-     */
-    protected function setUp()
-    {
-        parent::setUp();
-        $jsonString = file_get_contents(__DIR__ . "/../../../resources/testuser.json");
-        if ($jsonString === false) {
-            return null;
-        }
-
-        $this->attributes = json_decode($jsonString, true);
-    }
-
-    public function testLoadUser()
-    {
-        $this->setupHttpPreauthEnvironment();
-        $this->userProvider = new FederatedPreauthUserDetailsProvider(true);
-        $user = $this->userProvider->loadUser();
-        $this->assertNotNull($user);
-        $this->assertEquals("bbadger@wisc.edu", $user->getEppn());
-        $this->assertEquals("UW123A456", $user->getPvi());
-        $this->assertEquals("BUCKINGHAM BADGER", $user->getFullName());
-        $this->assertEquals("bucky.badger@wisc.edu", $user->getEmailAddress());
-        $this->assertEquals("a_source", $user->getSource());
-        $this->assertEquals("123456789", $user->getIsisEmplid());
-        $this->assertEquals("BUCKINGHAM", $user->getFirstName());
-        $this->assertEquals("BADGER", $user->getLastName());
-    }
-
-    public function testLoadUserWithNoEPPN()
-    {
-        $this->setupHttpPreauthEnvironment();
-        $this->userProvider = new FederatedPreauthUserDetailsProvider(true);
-        // Clear Shib session ID to simulate no session
-        putenv(UserDetailsProvider::SHIB_SESSION_ID);
-        $user = $this->userProvider->loadUser();
-        $this->assertNull($user);
-    }
-
-    public function testLoadUserWithNoEmail()
-    {
-        $this->setupHttpPreauthEnvironment();
-        $this->userProvider = new FederatedPreauthUserDetailsProvider(true);
-        // Clear email to simulate no email
-        putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_EMAIL));
-        $user = $this->userProvider->loadUser();
-        $this->assertFalse($user->getEmailAddress());
-    }
-
-    /**
-     * Setup environment to simulate a Preauth (Shib) environment.
-     */
-    private function setupPreauthEnvironment()
-    {
-        putenv(UserDetailsProvider::FED_EPPN . '=' . $this->attributes[UserDetailsProvider::FED_EPPN]);
-        putenv(UserDetailsProvider::FED_SPVI . '=' . $this->attributes[UserDetailsProvider::FED_SPVI]);
-        putenv(UserDetailsProvider::FED_FULLNAME . '=' . $this->attributes[UserDetailsProvider::FED_FULLNAME]);
-        putenv(UserDetailsProvider::FED_FIRST_NAME . '=' . $this->attributes[UserDetailsProvider::FED_FIRST_NAME]);
-        putenv(UserDetailsProvider::FED_LAST_NAME . '=' . $this->attributes[UserDetailsProvider::FED_LAST_NAME]);
-        putenv(UserDetailsProvider::UDDS . '=' . implode(",", $this->attributes[UserDetailsProvider::UDDS]));
-        putenv(UserDetailsProvider::FED_EMAIL . '=' . $this->attributes[UserDetailsProvider::FED_EMAIL]);
-        putenv(UserDetailsProvider::SOURCE . '=' . $this->attributes[UserDetailsProvider::SOURCE]);
-        putenv(UserDetailsProvider::ISIS_EMPLID . '=' . $this->attributes[UserDetailsProvider::ISIS_EMPLID]);
-        putenv(UserDetailsProvider::SHIB_SESSION_ID  . '=' . $this->attributes[UserDetailsProvider::SHIB_SESSION_ID]);
-    }
-
-    /**
-     * Setup environment to simulate HTTP Preauth.
-     */
-    private function setupHttpPreauthEnvironment()
-    {
-        putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_EPPN) . '=' . $this->attributes[UserDetailsProvider::FED_EPPN]);
-        putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_SPVI) . '=' . $this->attributes[UserDetailsProvider::FED_SPVI]);
-        putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_FULLNAME) . '=' . $this->attributes[UserDetailsProvider::FED_FULLNAME]);
-        putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_FIRST_NAME) . '=' . $this->attributes[UserDetailsProvider::FED_FIRST_NAME]);
-        putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_LAST_NAME) . '=' . $this->attributes[UserDetailsProvider::FED_LAST_NAME]);
-        putenv('HTTP_' . strtoupper(UserDetailsProvider::UDDS) . '=' . implode(",", $this->attributes[UserDetailsProvider::UDDS]));
-        putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_EMAIL) . '=' . $this->attributes[UserDetailsProvider::FED_EMAIL]);
-        putenv('HTTP_' . strtoupper(UserDetailsProvider::SOURCE) . '=' . $this->attributes[UserDetailsProvider::SOURCE]);
-        putenv('HTTP_' . strtoupper(UserDetailsProvider::ISIS_EMPLID) . '=' . $this->attributes[UserDetailsProvider::ISIS_EMPLID]);
-        putenv(UserDetailsProvider::SHIB_SESSION_ID  . '=' . $this->attributes[UserDetailsProvider::SHIB_SESSION_ID]);
-    }
-
-}
diff --git a/src/test/edu/wisc/doit/HTTPFederatedPreauthUserDetailsProviderTest.php b/src/test/edu/wisc/doit/HTTPFederatedPreauthUserDetailsProviderTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..683915a8cf0ad7df20511edd932756f44fbd281c
--- /dev/null
+++ b/src/test/edu/wisc/doit/HTTPFederatedPreauthUserDetailsProviderTest.php
@@ -0,0 +1,79 @@
+<?php
+
+use edu\wisc\doit\UserDetailsProvider;
+use edu\wisc\doit\FederatedPreauthUserDetailsProvider;
+
+/**
+ * Tests for {@link FederatedPreauthUserDetailsProvider}.
+ */
+class HTTPFederatedPreauthUserDetailsProviderTest extends \PHPUnit_Framework_TestCase
+{
+
+    /** @var array */
+    private $attributes;
+
+    /** @var UserDetailsProvider */
+    private $userProvider;
+
+    /**
+     * Populate putenv with Shib attributes to simulate a logged in user
+     */
+    protected function setUp()
+    {
+        parent::setUp();
+        $jsonString = file_get_contents(__DIR__ . "/../../../resources/testuser_http.json");
+        if ($jsonString === false) {
+            return null;
+        }
+
+        $this->attributes = json_decode($jsonString, true);
+        $this->userProvider = new FederatedPreauthUserDetailsProvider(true);
+
+        putenv($this->mapAttribute(UserDetailsProvider::FED_EPPN) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::FED_EPPN)]);
+        putenv($this->mapAttribute(UserDetailsProvider::FED_SPVI) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::FED_SPVI)]);
+        putenv($this->mapAttribute(UserDetailsProvider::FED_FULLNAME) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::FED_FULLNAME)]);
+        putenv($this->mapAttribute(UserDetailsProvider::FED_FIRST_NAME) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::FED_FIRST_NAME)]);
+        putenv($this->mapAttribute(UserDetailsProvider::FED_LAST_NAME) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::FED_LAST_NAME)]);
+        putenv($this->mapAttribute(UserDetailsProvider::UDDS) . '=' . implode(",", $this->attributes[$this->mapAttribute(UserDetailsProvider::UDDS)]));
+        putenv($this->mapAttribute(UserDetailsProvider::FED_EMAIL) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::FED_EMAIL)]);
+        putenv($this->mapAttribute(UserDetailsProvider::SOURCE) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::SOURCE)]);
+        putenv($this->mapAttribute(UserDetailsProvider::ISIS_EMPLID) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::ISIS_EMPLID)]);
+        putenv(UserDetailsProvider::SHIB_SESSION_ID_HTTP  . '=' . $this->attributes[UserDetailsProvider::SHIB_SESSION_ID_HTTP]);
+    }
+
+    public function testLoadUser()
+    {
+        $user = $this->userProvider->loadUser();
+        $this->assertNotNull($user);
+        $this->assertEquals("bbadger@wisc.edu", $user->getEppn());
+        $this->assertEquals("UW123A456", $user->getPvi());
+        $this->assertEquals("BUCKINGHAM BADGER", $user->getFullName());
+        $this->assertEquals("bucky.badger@wisc.edu", $user->getEmailAddress());
+        $this->assertEquals("a_source", $user->getSource());
+        $this->assertEquals("123456789", $user->getIsisEmplid());
+        $this->assertEquals("BUCKINGHAM", $user->getFirstName());
+        $this->assertEquals("BADGER", $user->getLastName());
+    }
+
+    public function testLoadUserWithNoEPPN()
+    {
+        // Clear Shib session ID to simulate no session
+        putenv(UserDetailsProvider::SHIB_SESSION_ID_HTTP);
+        $user = $this->userProvider->loadUser();
+        $this->assertNull($user);
+    }
+
+    public function testLoadUserWithNoEmail()
+    {
+        // Clear email to simulate no email
+        putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_EMAIL));
+        $user = $this->userProvider->loadUser();
+        $this->assertFalse($user->getEmailAddress());
+    }
+
+    private function mapAttribute($attribute)
+    {
+        return 'HTTP_' . strtoupper($attribute);
+    }
+
+}
diff --git a/src/test/edu/wisc/doit/LocalUserDetailsProviderTest.php b/src/test/edu/wisc/doit/LocalUserDetailsProviderTest.php
index 175219a72223dd6c2e651a092965777bb9627a95..52b4bb8fa1d4d6754791333cea72b7ae24c74614 100644
--- a/src/test/edu/wisc/doit/LocalUserDetailsProviderTest.php
+++ b/src/test/edu/wisc/doit/LocalUserDetailsProviderTest.php
@@ -10,7 +10,7 @@ class LocalUserDetailsProviderTest extends \PHPUnit_Framework_TestCase
 
     public function testLoadUser()
     {
-        $userDetailsService = new LocalUserDetailsProvider(__DIR__ . "/../../../resources/testuser.json");
+        $userDetailsService = new LocalUserDetailsProvider(__DIR__ . "/../../../resources/localuser.json");
         $user = $userDetailsService->loadUser();
         $this->assertEquals("bbadger@wisc.edu", $user->getEppn());
         $this->assertEquals("UW123A456", $user->getPvi());
diff --git a/src/test/resources/testuser.json b/src/test/resources/localuser.json
similarity index 84%
rename from src/test/resources/testuser.json
rename to src/test/resources/localuser.json
index 57b252d5d69b82f576f98be3b34ed07d2f63eac1..a3a534459cfdc2a46fbf549dc978220726505e98 100644
--- a/src/test/resources/testuser.json
+++ b/src/test/resources/localuser.json
@@ -11,6 +11,5 @@
   ],
   "eduWisconsinEmailAddress": "bucky.badger@wisc.edu",
   "source": "a_source",
-  "isisEmplid": "123456789",
-  "Shib-Session-Id": "1234567890"
+  "isisEmplid": "123456789"
 }
\ No newline at end of file
diff --git a/src/test/resources/testuser_http.json b/src/test/resources/testuser_http.json
new file mode 100644
index 0000000000000000000000000000000000000000..7de908f421b737c919579067ef9789b1286303ea
--- /dev/null
+++ b/src/test/resources/testuser_http.json
@@ -0,0 +1,16 @@
+{
+  "HTTP_EPPN": "bbadger@wisc.edu",
+  "HTTP_EDUWISCONSINSPVI": "UW123A456",
+  "HTTP_CN": "BUCKINGHAM BADGER",
+  "HTTP_EDUWISCONSINCOMMONNAME": "BUCKINGHAM BADGER",
+  "HTTP_EDUWISCONSINGIVENNAME": "BUCKINGHAM",
+  "HTTP_EDUWISCONSINSURNAME": "BADGER",
+  "HTTP_UDDS": [
+    "UW123A456",
+    "UW234A567"
+  ],
+  "HTTP_EDUWISCONSINEMAILADDRESS": "bucky.badger@wisc.edu",
+  "HTTP_SOURCE": "a_source",
+  "HTTP_ISISEMPLID": "123456789",
+  "HTTP_SHIB_SESSION_ID": "1234567890"
+}
\ No newline at end of file