diff --git a/lib/private/Session/CryptoSessionData.php b/lib/private/Session/CryptoSessionData.php
index f6c585c161133a4b8c22e2d55a33bbe497c925d3..629e6af5412854342514deb421d641715e4575a2 100644
--- a/lib/private/Session/CryptoSessionData.php
+++ b/lib/private/Session/CryptoSessionData.php
@@ -24,6 +24,7 @@ namespace OC\Session;
 
 use OCP\ISession;
 use OCP\Security\ICrypto;
+use OCP\Session\Exceptions\SessionNotAvailableException;
 
 /**
  * Class CryptoSessionData
@@ -141,6 +142,17 @@ class CryptoSessionData implements \ArrayAccess, ISession {
 		$this->session->regenerateId($deleteOldSession);
 	}
 
+	/**
+	 * Wrapper around session_id
+	 *
+	 * @return string
+	 * @throws SessionNotAvailableException
+	 * @since 9.1.0
+	 */
+	public function getId() {
+		return $this->session->getId();
+	}
+
 	/**
 	 * Close the session and release the lock, also writes all changed data in batch
 	 */
diff --git a/lib/private/Session/Internal.php b/lib/private/Session/Internal.php
index 09175bf1f2fa7ac1d37d678af9d5294fde32bf5f..a24aec552226c492dd80074a3618ab65b011e833 100644
--- a/lib/private/Session/Internal.php
+++ b/lib/private/Session/Internal.php
@@ -26,6 +26,8 @@
 
 namespace OC\Session;
 
+use OCP\Session\Exceptions\SessionNotAvailableException;
+
 /**
  * Class Internal
  *
@@ -111,6 +113,21 @@ class Internal extends Session {
 		@session_regenerate_id($deleteOldSession);
 	}
 
+	/**
+	 * Wrapper around session_id
+	 *
+	 * @return string
+	 * @throws SessionNotAvailableException
+	 * @since 9.1.0
+	 */
+	public function getId() {
+		$id = @session_id();
+		if ($id === '') {
+			throw new SessionNotAvailableException();
+		}
+		return $id;
+	}
+
 	/**
 	 * @throws \Exception
 	 */
diff --git a/lib/private/Session/Memory.php b/lib/private/Session/Memory.php
index 777458a9aa5555dd81bdd5d420e816bd47a00952..bcb1f1d950c6ab5fd3b82864ca8c7e7a01931d47 100644
--- a/lib/private/Session/Memory.php
+++ b/lib/private/Session/Memory.php
@@ -26,6 +26,9 @@
 
 namespace OC\Session;
 
+use Exception;
+use OCP\Session\Exceptions\SessionNotAvailableException;
+
 /**
  * Class Internal
  *
@@ -88,6 +91,17 @@ class Memory extends Session {
 	 */
 	public function regenerateId($deleteOldSession = true) {}
 
+	/**
+	 * Wrapper around session_id
+	 *
+	 * @return string
+	 * @throws SessionNotAvailableException
+	 * @since 9.1.0
+	 */
+	public function getId() {
+		throw new SessionNotAvailableException('Memory session does not have an ID');
+	}
+
 	/**
 	 * Helper function for PHPUnit execution - don't use in non-test code
 	 */
@@ -98,11 +112,11 @@ class Memory extends Session {
 	/**
 	 * In case the session has already been locked an exception will be thrown
 	 *
-	 * @throws \Exception
+	 * @throws Exception
 	 */
 	private function validateSession() {
 		if ($this->sessionClosed) {
-			throw new \Exception('Session has been closed - no further changes to the session are allowed');
+			throw new Exception('Session has been closed - no further changes to the session are allowed');
 		}
 	}
 }
diff --git a/lib/public/Session/Exceptions/SessionNotAvailableException.php b/lib/public/Session/Exceptions/SessionNotAvailableException.php
new file mode 100644
index 0000000000000000000000000000000000000000..d347e0df15ec80c1121bea41b9cfee842d3c6f59
--- /dev/null
+++ b/lib/public/Session/Exceptions/SessionNotAvailableException.php
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * @author Christoph Wurst <christoph@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCP\Session\Exceptions;
+
+use Exception;
+
+/**
+ * @since 9.1.0
+ */
+class SessionNotAvailableException extends Exception {
+	
+}
diff --git a/lib/public/isession.php b/lib/public/isession.php
index 25c76906d63fd27f0ac80a348c913fbe6783df97..7bc8654a1b9c4eeba195e0c10b4f0e8d55ef1b7a 100644
--- a/lib/public/isession.php
+++ b/lib/public/isession.php
@@ -95,4 +95,13 @@ interface ISession {
 	 * @since 9.0.0
 	 */
 	public function regenerateId($deleteOldSession = true);
+
+	/**
+	 * Wrapper around session_id
+	 *
+	 * @return string
+	 * @throws SessionNotAvailableException
+	 * @since 9.1.0
+	 */
+	public function getId();
 }
diff --git a/tests/lib/session/memory.php b/tests/lib/session/memory.php
index 1ca4956c6ea497e093a36b7457c4b6cfdecb6c91..dbf2737fb3f64f5a1c560dfa1142b16b5a70b587 100644
--- a/tests/lib/session/memory.php
+++ b/tests/lib/session/memory.php
@@ -10,8 +10,17 @@
 namespace Test\Session;
 
 class Memory extends Session {
+
 	protected function setUp() {
 		parent::setUp();
 		$this->instance = new \OC\Session\Memory($this->getUniqueID());
 	}
+
+	/**
+	 * @expectedException OCP\Session\Exceptions\SessionNotAvailableException
+	 */
+	public function testThrowsExceptionOnGetId() {
+		$this->instance->getId();
+	}
+
 }