diff --git a/modules/core/templates/authsource_list.tpl.php b/modules/core/templates/authsource_list.tpl.php
new file mode 100644
index 0000000000000000000000000000000000000000..0f075e8a483d7f396f755416250a60122484328c
--- /dev/null
+++ b/modules/core/templates/authsource_list.tpl.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Template to show list of configured authentication sources.
+ *
+ */
+$this->data['header'] = 'Test authentication sources';
+
+$this->includeAtTemplateBase('includes/header.php');
+?>
+<h1><?php echo $this->data['header']; ?></h1>
+<ul>
+<?php
+foreach ($this->data['sources'] as $id) {
+	echo '<li><a href="?as=' . htmlspecialchars(urlencode($id)) . '">' . htmlspecialchars($id) . '</a></li>';
+}
+?>
+</ul>
+
+<?php
+$this->includeAtTemplateBase('includes/footer.php');
+?>
diff --git a/modules/core/www/authenticate.php b/modules/core/www/authenticate.php
index 75d48136b70df409efe47febc4e06a9c3c282d36..31ed34ba194020458aa41b6d0951550555859b5b 100644
--- a/modules/core/www/authenticate.php
+++ b/modules/core/www/authenticate.php
@@ -26,7 +26,11 @@ if (array_key_exists(SimpleSAML_Auth_State::EXCEPTION_PARAM, $_REQUEST)) {
 }
 
 if(!array_key_exists('as', $_REQUEST)) {
-	throw new Exception('No authentication source chosen.');
+	$t = new SimpleSAML_XHTML_Template($config, 'core:authsource_list.tpl.php');
+
+	$t->data['sources'] = SimpleSAML_Auth_Source::getSources();
+	$t->show();
+	exit();
 }
 
 $as = $_REQUEST['as'];