authentik.enterprise.providers.ssf.views.configuration

 1from django.http import Http404, HttpRequest, HttpResponse, JsonResponse
 2from django.shortcuts import get_object_or_404
 3from django.urls import reverse
 4from rest_framework.permissions import AllowAny
 5
 6from authentik.core.models import Application
 7from authentik.enterprise.providers.ssf.models import DeliveryMethods, SSFProvider
 8from authentik.enterprise.providers.ssf.views.base import SSFView
 9
10
11class ConfigurationView(SSFView):
12    """SSF configuration endpoint"""
13
14    permission_classes = [AllowAny]
15
16    def get_authenticators(self):
17        return []
18
19    def get(self, request: HttpRequest, application_slug: str, *args, **kwargs) -> HttpResponse:
20        application = get_object_or_404(Application, slug=application_slug)
21        provider = application.backchannel_provider_for(SSFProvider)
22        if not provider:
23            raise Http404
24        data = {
25            "spec_version": "1_0-ID2",
26            "issuer": self.request.build_absolute_uri(
27                reverse(
28                    "authentik_providers_ssf:configuration",
29                    kwargs={
30                        "application_slug": application.slug,
31                    },
32                )
33            ),
34            "jwks_uri": self.request.build_absolute_uri(
35                reverse(
36                    "authentik_providers_ssf:jwks",
37                    kwargs={
38                        "application_slug": application.slug,
39                    },
40                )
41            ),
42            "configuration_endpoint": self.request.build_absolute_uri(
43                reverse(
44                    "authentik_providers_ssf:stream",
45                    kwargs={
46                        "application_slug": application.slug,
47                    },
48                )
49            ),
50            "verification_endpoint": self.request.build_absolute_uri(
51                reverse(
52                    "authentik_providers_ssf:stream-verify",
53                    kwargs={
54                        "application_slug": application.slug,
55                    },
56                )
57            ),
58            "status_endpoint": self.request.build_absolute_uri(
59                reverse(
60                    "authentik_providers_ssf:stream-status",
61                    kwargs={
62                        "application_slug": application.slug,
63                    },
64                )
65            ),
66            "delivery_methods_supported": [DeliveryMethods.RISC_PUSH, DeliveryMethods.RFC_PUSH],
67            "authorization_schemes": [{"spec_urn": "urn:ietf:rfc:6749"}],
68        }
69        return JsonResponse(data)
class ConfigurationView(authentik.enterprise.providers.ssf.views.base.SSFView):
12class ConfigurationView(SSFView):
13    """SSF configuration endpoint"""
14
15    permission_classes = [AllowAny]
16
17    def get_authenticators(self):
18        return []
19
20    def get(self, request: HttpRequest, application_slug: str, *args, **kwargs) -> HttpResponse:
21        application = get_object_or_404(Application, slug=application_slug)
22        provider = application.backchannel_provider_for(SSFProvider)
23        if not provider:
24            raise Http404
25        data = {
26            "spec_version": "1_0-ID2",
27            "issuer": self.request.build_absolute_uri(
28                reverse(
29                    "authentik_providers_ssf:configuration",
30                    kwargs={
31                        "application_slug": application.slug,
32                    },
33                )
34            ),
35            "jwks_uri": self.request.build_absolute_uri(
36                reverse(
37                    "authentik_providers_ssf:jwks",
38                    kwargs={
39                        "application_slug": application.slug,
40                    },
41                )
42            ),
43            "configuration_endpoint": self.request.build_absolute_uri(
44                reverse(
45                    "authentik_providers_ssf:stream",
46                    kwargs={
47                        "application_slug": application.slug,
48                    },
49                )
50            ),
51            "verification_endpoint": self.request.build_absolute_uri(
52                reverse(
53                    "authentik_providers_ssf:stream-verify",
54                    kwargs={
55                        "application_slug": application.slug,
56                    },
57                )
58            ),
59            "status_endpoint": self.request.build_absolute_uri(
60                reverse(
61                    "authentik_providers_ssf:stream-status",
62                    kwargs={
63                        "application_slug": application.slug,
64                    },
65                )
66            ),
67            "delivery_methods_supported": [DeliveryMethods.RISC_PUSH, DeliveryMethods.RFC_PUSH],
68            "authorization_schemes": [{"spec_urn": "urn:ietf:rfc:6749"}],
69        }
70        return JsonResponse(data)

SSF configuration endpoint

permission_classes = [<class 'rest_framework.permissions.AllowAny'>]
def get_authenticators(self):
17    def get_authenticators(self):
18        return []

Instantiates and returns the list of authenticators that this view can use.

def get( self, request: django.http.request.HttpRequest, application_slug: str, *args, **kwargs) -> django.http.response.HttpResponse:
20    def get(self, request: HttpRequest, application_slug: str, *args, **kwargs) -> HttpResponse:
21        application = get_object_or_404(Application, slug=application_slug)
22        provider = application.backchannel_provider_for(SSFProvider)
23        if not provider:
24            raise Http404
25        data = {
26            "spec_version": "1_0-ID2",
27            "issuer": self.request.build_absolute_uri(
28                reverse(
29                    "authentik_providers_ssf:configuration",
30                    kwargs={
31                        "application_slug": application.slug,
32                    },
33                )
34            ),
35            "jwks_uri": self.request.build_absolute_uri(
36                reverse(
37                    "authentik_providers_ssf:jwks",
38                    kwargs={
39                        "application_slug": application.slug,
40                    },
41                )
42            ),
43            "configuration_endpoint": self.request.build_absolute_uri(
44                reverse(
45                    "authentik_providers_ssf:stream",
46                    kwargs={
47                        "application_slug": application.slug,
48                    },
49                )
50            ),
51            "verification_endpoint": self.request.build_absolute_uri(
52                reverse(
53                    "authentik_providers_ssf:stream-verify",
54                    kwargs={
55                        "application_slug": application.slug,
56                    },
57                )
58            ),
59            "status_endpoint": self.request.build_absolute_uri(
60                reverse(
61                    "authentik_providers_ssf:stream-status",
62                    kwargs={
63                        "application_slug": application.slug,
64                    },
65                )
66            ),
67            "delivery_methods_supported": [DeliveryMethods.RISC_PUSH, DeliveryMethods.RFC_PUSH],
68            "authorization_schemes": [{"spec_urn": "urn:ietf:rfc:6749"}],
69        }
70        return JsonResponse(data)