diff --git a/server/handlers.go b/server/handlers.go
index c265e0b1d287d2e9dfb78bfffd2ac54a0e59e847..d9700f3029a796c35454baaa0962bee0189a9be1 100644
--- a/server/handlers.go
+++ b/server/handlers.go
@@ -223,6 +223,7 @@ func (s *Server) handleConnectorLogin(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 	scopes := parseScopes(authReq.Scopes)
+	showBacklink := len(s.connectors) > 1
 
 	switch r.Method {
 	case "GET":
@@ -250,7 +251,7 @@ func (s *Server) handleConnectorLogin(w http.ResponseWriter, r *http.Request) {
 			}
 			http.Redirect(w, r, callbackURL, http.StatusFound)
 		case connector.PasswordConnector:
-			if err := s.templates.password(w, r.URL.String(), "", usernamePrompt(conn), false); err != nil {
+			if err := s.templates.password(w, r.URL.String(), "", usernamePrompt(conn), false, showBacklink); err != nil {
 				s.logger.Errorf("Server template error: %v", err)
 			}
 		case connector.SAMLConnector:
@@ -298,7 +299,7 @@ func (s *Server) handleConnectorLogin(w http.ResponseWriter, r *http.Request) {
 			return
 		}
 		if !ok {
-			if err := s.templates.password(w, r.URL.String(), username, usernamePrompt(passwordConnector), true); err != nil {
+			if err := s.templates.password(w, r.URL.String(), username, usernamePrompt(passwordConnector), true, showBacklink); err != nil {
 				s.logger.Errorf("Server template error: %v", err)
 			}
 			return
diff --git a/server/templates.go b/server/templates.go
index aff4568c1e50f9881c4e52c5b4567c992ff51484..5cadefa37261b0e839919e23f1251b7bed01263f 100644
--- a/server/templates.go
+++ b/server/templates.go
@@ -190,13 +190,14 @@ func (t *templates) login(w http.ResponseWriter, connectors []connectorInfo) err
 	return renderTemplate(w, t.loginTmpl, data)
 }
 
-func (t *templates) password(w http.ResponseWriter, postURL, lastUsername, usernamePrompt string, lastWasInvalid bool) error {
+func (t *templates) password(w http.ResponseWriter, postURL, lastUsername, usernamePrompt string, lastWasInvalid, showBacklink bool) error {
 	data := struct {
 		PostURL        string
+		BackLink       bool
 		Username       string
 		UsernamePrompt string
 		Invalid        bool
-	}{postURL, lastUsername, usernamePrompt, lastWasInvalid}
+	}{postURL, showBacklink, lastUsername, usernamePrompt, lastWasInvalid}
 	return renderTemplate(w, t.passwordTmpl, data)
 }
 
diff --git a/web/templates/password.html b/web/templates/password.html
index bd2e954dc1c4a243662d74f15f76b53c069228e6..5b585b4e9b37a78954a7bdac052ba241ca963dd5 100644
--- a/web/templates/password.html
+++ b/web/templates/password.html
@@ -25,6 +25,11 @@
     <button tabindex="3" id="submit-login" type="submit" class="dex-btn theme-btn--primary">Login</button>
 
   </form>
+  {{ if .BackLink }}
+  <div class="theme-link-back">
+    <a class="dex-subtle-text" href="javascript:history.back()">Select another login method.</a>
+  </div>
+  {{ end }}
 </div>
 
 {{ template "footer.html" . }}
diff --git a/web/themes/coreos/styles.css b/web/themes/coreos/styles.css
index 517f06a70eedb4f6405d71c7133202d30c3705ed..2d92057119a21559732472ee9be2a0c71850d7fc 100644
--- a/web/themes/coreos/styles.css
+++ b/web/themes/coreos/styles.css
@@ -107,3 +107,7 @@
   text-align: left;
   width: 250px;
 }
+
+.theme-link-back {
+  margin-top: 4px;
+}