diff --git a/netbox/templates/login.html b/netbox/templates/login.html index b4b0df8d9..e9ad54c45 100644 --- a/netbox/templates/login.html +++ b/netbox/templates/login.html @@ -42,7 +42,7 @@ {% if auth_backends %}
Or use a single sign-on (SSO) provider:
{% for name, backend in auth_backends.items %} - {% if name == 'saml' %} + {% if name == 'saml' and backend.idps %} {% for idp in backend.idps %}
{% if backend.icon_name %}{% endif %} diff --git a/netbox/users/views.py b/netbox/users/views.py index 06259b5ec..574a41052 100644 --- a/netbox/users/views.py +++ b/netbox/users/views.py @@ -17,7 +17,7 @@ from social_core.backends.utils import load_backends from extras.models import ObjectChange from extras.tables import ObjectChangeTable -from netbox.authentication import get_auth_backend_display +from netbox.authentication import get_auth_backend_display, get_saml_idps from netbox.config import get_config from utilities.forms import ConfirmationForm from .forms import LoginForm, PasswordChangeForm, TokenForm, UserConfigForm @@ -46,9 +46,18 @@ class LoginView(View): logger = logging.getLogger('netbox.auth.login') return self.redirect_to_next(request, logger) - auth_backends = { - name: get_auth_backend_display(name) for name in load_backends(settings.AUTHENTICATION_BACKENDS).keys() - } + auth_backends = {} + for name in load_backends(settings.AUTHENTICATION_BACKENDS).keys(): + display_name, icon_name = get_auth_backend_display(name) + data = { + 'display_name': display_name, + 'icon_name': icon_name, + } + + if name == 'saml': + data['idps'] = get_saml_idps() + + auth_backend[name] = data return render(request, self.template_name, { 'form': form,